【正确答案】
【答案解析】如果一个项目中存在两个C文件,而这两个C文件都include(包含)了同一个头文件,当编译时,这两个C文件要一同编译成一个可运行文件,可能会产生大量的声明冲突。而解决的办法是把头文件的内容都放在#ifndef和#endif中,一般格式如下:
#ifndef<标识>
#define<标识>
...
...
#endif
上述代码的作用是当“当标识没有由#define定义过时,则定义标识。<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下画线,并把文件名中的“.”也变成下画线,如stdio.h。
#ifndef_STDIO_H_
#define_STDIO_H_
#endif
在#ifndef中定义变量出现的问题(一般不定义在#ifndef中)如下所示:
#ifndef AAA
#define AAA
...
int i;
...
#endif
里面有一个变量定义,在VC中链接时就出现了i重复定义的错误,而在C语言中成功编译。