我的c文件(sample.c)有一个头文件(sample.h)。当我在我的头文件中原型化一个函数时,如下所示。
return_type sample_fun (FILE *filePtr);
我收到编译错误,Syntax error: possible missing ')' or ','?
当我包含stdio.h时,错误已解决。 stdio.h是否包含强制性?我的一些文件在没有包含的情况下运行良好。
我在AIX上使用gcc。
答案 0 :(得分:5)
是的,类型FILE
在stdio.h
中定义;如果你提到它,那么你必须包含该文件。
答案 1 :(得分:2)
是的。在大多数平台上,FILE
都来自typedef
struct iobuf
。这要求struct iobuf
的完整定义存在,即使所有接口都使用FILE *
,并且指针类型在使用之前通常不需要完整定义(C限制)。
有关详细信息,请参阅此问题:Forward declare FILE *