C 中的 FILE 需要包含吗?

发布于 2024-11-04 06:09:16 字数 270 浏览 3 评论 0原文

我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

奢欲 2024-11-11 06:09:16

是的,FILE类型是在stdio.h中定义的;如果您提到它,那么您必须包含该文件。

Yes, the type FILE is defined in stdio.h; if you mention it, then you must include that file.

爱的故事 2024-11-11 06:09:16

是的。在大多数平台上,FILE 是由 struct iobuf 进行 typedef 编辑的。这要求存在 struct iobuf 的完整定义,即使所有接口都使用 FILE * ,并且指针类型在使用之前通常不需要完整定义(C局限性)。

有关详细信息,请参阅此问题:转发声明文件 *

Yes it is. FILE is typedefed from a struct iobuf on most platforms. This requires that the full definition of struct iobuf be present, even though all the interfaces use FILE *, and pointer types do not normally require full definitions prior to their use (C limitation).

See this question for more information: Forward declare FILE *

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文