c - 错误 : expected '=' , ',' , ';' , 'asm' 或 '__attribute__' 在 C 中的 '*' token 之前

标签 c file-io header-files

我有以下声明

FILE *fptr; FILE *optr;

在算法中 我在 main.c 中有 main 打开这些文件。 如果我将声明放在头文件中,就会出现上述错误。如果我把它放在 main.c 中,就会出现多个定义错误,例如

src\main.o:main.c:(.bss+0xc88): multiple definition of <code>rcount' src\new_algo.o:new_algo.c:(.bss+0xc88): first defined here src\main.o:main.c:(.bss+0xc8c): multiple definition of</code>condi' src\new_algo.o:new_algo.c:(.bss+0xc8c): first defined here

最佳答案

有点像你 (1) 没有包含 <stdio.h>你在哪里使用 FILE , 和/或 (2) 有一些非 static可执行代码或非 extern header 中的变量定义(和/或 #include 是一个 C 文件)。

第一个通常会导致 FILE不被定义(或者在某些情况下被 typedef 定义为不存在的类型)。第二个会导致在包含文件的每个翻译单元中定义内容,这会使链接器感到困惑。

修复:(1) #include <stdio.h>在文件中 FILE被使用,并且 (2) 将共享定义从 header 移动到 .c 文件中(和/或将它们声明为 staticextern 视情况而定),并且永远只有 #include .h 文件。

关于c - 错误 : expected '=' , ',' , ';' , 'asm' 或 '__attribute__' 在 C 中的 '*' token 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5575700/

相关文章:

java - 我可以使用 FileOutputStream 在服务器上保存文件吗?

linux - 如何将输出重定向到文件和标准输出

c - 预期标识符或 '('

cocoa - NSCocoaErrorDomain 错误代码常量在哪里定义?

c++ - 编译 flex.cc 会报错

c++ - "dereferencing"指针是什么意思?

c - 在套接字编程中返回指向结构的指针

c - 没有 free() 调用 malloc() 的真正后果是什么?它会使程序变得疯狂,例如永远循环吗?

java - 将来使用 NIO 和 NIO2 处理文件和文件系统 : Before NIO,

c++ - 在 C++ 中创建头文件时出错