是C 中的 FILE 需要包含吗?
我的 c 文件 (sample.c) 有一个头文件 (sample.h)。当我在头文件中原型化一个函数时,如下所示。
return_type sample_fun (FILE *filePtr);
我收到编译错误,提示:语法错误:可能缺少 ')' 或 ','?
当我包含 stdio.h 时,错误已解决。 stdio.h 包含是强制性的吗?我的一些文件在没有包含的情况下也能正常工作。
我在 AIX 上使用 gcc。
I have a header file (sample.h) for my c file (sample.c). When I prototyped a function in my header file as below.
return_type sample_fun (FILE *filePtr);
I get a compilation error saying, Syntax error: possible missing ')' or ','?
When I include the stdio.h error is resolved. Is the stdio.h include mandatory? Some of my files work well without the include.
I use gcc on AIX.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,
FILE
类型是在stdio.h
中定义的;如果您提到它,那么您必须包含该文件。Yes, the type
FILE
is defined instdio.h
; if you mention it, then you must include that file.是的。在大多数平台上,
FILE
是由struct iobuf
进行typedef
编辑的。这要求存在 struct iobuf 的完整定义,即使所有接口都使用 FILE * ,并且指针类型在使用之前通常不需要完整定义(C局限性)。有关详细信息,请参阅此问题:转发声明文件 *
Yes it is.
FILE
istypedef
ed from astruct iobuf
on most platforms. This requires that the full definition ofstruct iobuf
be present, even though all the interfaces useFILE *
, and pointer types do not normally require full definitions prior to their use (C limitation).See this question for more information: Forward declare FILE *