C 预处理阶段&;多文件(基础)
我有三个文件,想编译它 第一个文件是app.cC 预处理阶段&;多文件(基础),c,c-preprocessor,preprocessor-directive,C,C Preprocessor,Preprocessor Directive,我有三个文件,想编译它 第一个文件是app.c #include"sum.h" int main (void) { sum(); return 0; } 第二个文件是sum.h #ifndef SUM_H #define SUM_H void sum (); #endif 和第三个文件sum.c #include"sum.h" void sum () { return; } 我写下这些声明: #ifndef SUM_H #define SUM_H ... ... ... #
#include"sum.h"
int main (void)
{
sum();
return 0;
}
第二个文件是sum.h
#ifndef SUM_H
#define SUM_H
void sum ();
#endif
和第三个文件sum.c
#include"sum.h"
void sum ()
{
return;
}
我写下这些声明:
#ifndef SUM_H
#define SUM_H
...
...
...
#endif
防止对sum.h
的内容进行多重定义
在编译过程中,app.c
将进入预处理阶段,然后sum.c
进入预处理阶段当sum.c
进入预处理器时,我的问题是如何知道sum_H
是在myapp的最后一个文件中定义的?
我认为每个源文件分别进入预处理阶段和编译阶段 是的,每个文件都是单独编译的,因此只包含保护防止在同一个中多次包含头文件,而不是跨不同的翻译单元 当预编译器预处理
app.c
时,只检查SUM_H
是否已在app.c
中定义。这避免了通过本翻译单元中的不同标题多次包含sum.h
。这是因为一旦sum.h
被包含,就会定义sum\u h