c - 包含带有数组声明的 header 时出错

标签 c

我有一个头文件和两个源文件。在所述头文件中,我有以下声明:

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/

相关文章:

c++ - 关于C++中函数定义的一个问题

c - 使用 CreateProcessAsUser 将用户恢复到 session 1 后,用户的路径不再可访问

c - 在声明和定义之前可以调用具有 int 或 void 返回类型的函数吗?

c - 对链表使用自由函数时出现内存错误

c - 整页 Malloc

c - Realloc 触发了断点

CMock - 多重定义

c - 读取器线程未退出 - Posix Pthreads

c - 如何将位域写入整数值?

ios - 将 struct 转换为 Objective-C 数组或类