C stdio包含在头文件中
我不完全确定,但这看起来不对: 我有一个名为fraction.h的头文件,其中存储了一个分数结构和处理它的方法,一个方法用于在文件中写入分数,在这个函数的签名中,一个参数是文件指针 分数h: c部分: 当然,我在程序中包括分数.h。 但我一直在犯这样的错误: fraction.h:34:54:错误:未知类型名称“文件” 有人可以解释编译器包含文件的不同步骤吗? 因为C stdio包含在头文件中,c,include,header-files,stdio,C,Include,Header Files,Stdio,我不完全确定,但这看起来不对: 我有一个名为fraction.h的头文件,其中存储了一个分数结构和处理它的方法,一个方法用于在文件中写入分数,在这个函数的签名中,一个参数是文件指针 分数h: c部分: 当然,我在程序中包括分数.h。 但我一直在犯这样的错误: fraction.h:34:54:错误:未知类型名称“文件” 有人可以解释编译器包含文件的不同步骤吗? 因为在分数.c中,所以为什么会出现这种未找到的类型错误 我是否应该将包含在分数.h中?从我微薄的经验来看,这似乎不太合适。当预处理器处理
在分数.c中,所以为什么会出现这种未找到的类型错误
我是否应该将
包含在分数.h中?从我微薄的经验来看,这似乎不太合适。当预处理器处理一个文件时,它会将包含的文件的内容复制到被预处理的文件中。在fraction.c
中没有得到该错误的原因是stdio.h
的内容包含在fraction.h
之前
因此预处理的文件fragments.c
如下所示:
stdio.h contents
fragment.h contents
fragment.c contents
请注意,文件
定义将通过stdio.h
包含,然后在fragment.h
中引用
您应该在分数.h中包含
stdio.h
,以消除此错误。在程序\u test.c中包含stdio.h。如果程序_test.c(包括fraction.h)中没有包含stdio.h,编译器将不知道fraction.h使用的文件的定义,并生成错误
而且,在编译
程序测试时,确实应该在分数.h中包含stdio.h,编译器不会查看其他.c文件,只查看实际编译文件中包含的文件
因此,您要么在测试程序中包含
,就像在fraction.c
中一样,要么将其包含在头文件中
尽管C标准表示标准库文件将不包含彼此,但没有任何迹象表明用户定义的文件不能做到这一点。事实上,如果使用它们,通常会更容易。您还必须在program_test.c中包含
。感谢您的明确说明,您能否提供一些链接,详细解释如何从一组源文件构建可执行文件?并不是说我没有得到你的答案(我得到了),而是关于你的stackoverflow积分,我打赌你有好地方可以推荐。也许是这个?还是这个
#include <stdio.h>
#include "fraction.h"
...
program_test: fraction.o program_test.o
stdio.h contents
fragment.h contents
fragment.c contents