在头文件“foo.h”中,有以下语句,
int foo;
在源文件“a.c”和“b.c”中,包含头文件。
#include "foo.h"
两个地方有两个独立的foo,还是只有一个foo在“a.c”和“b.c”之间共享?我看到这发生在来自其他人的共享代码中。如果您能理解这一点,请提前致谢。
答案 0 :(得分:2)
通过多次定义外部对象,您将收到错误。
在标题文件中使用extern int foo;
,在int foo;
个文件中使用.c
。
文件范围声明的extern
说明符(如果没有初始值设定项)声明而没有定义。
答案 1 :(得分:0)
预处理器只需将#include "foo.h"
替换为foo.h
的内容。
完全等同于a.c
和b.c
同时包含int foo;