我有一个头文件和两个源文件。在所述头文件中,我有以下声明:
const char *letters[] = {"A", "B", "C", "D"};
我在两个源文件中都包含了我的头文件。当我尝试编译时,我得到:
/tmp/cc6gLw9s.o:(.data+0xa0): multiple definition of `letters'
/tmp/ccjqd0rr.o:(.data+0xa0): first defined here
最佳答案
如果您分别编译 2 个源文件并且每个文件都包含 header ,那么变量 letters
将被声明两次,每个源文件一次。为防止这种情况,请在头文件中将变量声明为 extern
。
extern const char *letters[];
然后,将实际变量放入1源文件中。
const char *letters[] = {...};
关于c - 包含带有数组声明的 header 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42702658/