struct FILE{int handle;}; FILE__stdout; FILE__stdin; 后面两句缺少类型说明符或存储类别说明符?
时间: 2023-07-30 13:07:13 浏览: 97
是的,后面两句缺少类型说明符或存储类别说明符。应该在定义变量时指定它们的类型。假设你想要定义两个文件指针,可以这样写:
```
struct FILE {
int handle;
};
struct FILE stdout_file;
struct FILE stdin_file;
```
这样就定义了两个名为stdout_file和stdin_file的文件指针,它们的类型是struct FILE。在C语言中,变量定义必须指定变量名和类型,可以使用结构体名作为类型名来定义结构体变量。
相关问题
struct FILE{int handle;}; struct FILE__stdout; struct FILE__stdin; 语句作用?
这些语句定义了三个结构体,分别是`FILE`、`FILE__stdout`和`FILE__stdin`。
`FILE`结构体中只有一个成员变量`handle`,用于存储文件或设备的句柄。在C语言中,`FILE`结构体通常用于表示文件流(file stream),比如`stdin`、`stdout`和`stderr`等标准输入输出流。
`FILE__stdout`和`FILE__stdin`是两个自定义的结构体,用于分别表示标准输出流和标准输入流。这里使用了双下划线来避免与标准库中的同名结构体冲突。
需要注意的是,这里只是定义了结构体,并没有为这些结构体分配内存空间。在实际使用中,需要通过`malloc`等函数为结构体分配内存空间。
struct __FILE { int handle;}; FILE __stdin; FILE __stdout; int fputc(int ch, FILE *fp) { USART_SendData(USART1, ch); while(RESET == USART_GetFlagStatus(USART1,USART_FLAG_TXE)); return ch;
这段代码定义了一个结构体`__FILE`,其中只有一个整型成员`handle`。接下来定义了两个全局变量`__stdin`和`__stdout`,它们的类型都是`FILE`。
接下来是一个自定义的输出函数`fputc`,它接受一个字符和一个指向`FILE`类型的指针作为参数。在函数体内部,使用`USART_SendData`函数将字符发送到USART1串口。
然后使用一个循环等待USART1串口发送完数据,即等待USART_FLAG_TXE标志位置位。
最后,函数返回发送的字符。
阅读全文