我看过一个代码,其中在头文件中声明了一个char数组,并且头文件包含在两个文件中。
// header
char lookup[255];
我认为两个相同名称的数组定义应该存在一些链接器错误,应该对其进行声明并将其定义在.c文件中,并将extern放在标题中。
答案 0 :(得分:1)
请勿将任何实际数据或代码放入头文件中。有一些例外,例如静态内联函数,但根据经验:在头文件中,仅声明和类型;在.c
文件中,定义
答案 1 :(得分:0)
编译器将独立编译每个.c文件,而不知道该文件已经包含在另一个文件中。但是,一旦尝试将编译的目标文件链接在一起,就会出现链接器错误。
使用gcc,可以完成以下工作:
reduce
但是链接失败:
gcc -c include1.cpp include2.cpp