我有一个头文件和两个源文件.在所述头文件中,我有以下声明:
const char *letters[] = {"A", "B", "C", "D"};
Run Code Online (Sandbox Code Playgroud)
我已将头文件包含在两个源文件中.当我尝试编译时,我得到:
/tmp/cc6gLw9s.o:(.data+0xa0): multiple definition of `letters'
/tmp/ccjqd0rr.o:(.data+0xa0): first defined here
Run Code Online (Sandbox Code Playgroud)
小智 5
如果单独编译2个源文件并且每个源文件都包含标题,则该变量letters将在每个源文件中声明两次,一次.要防止这种情况,请extern在头文件中声明变量.
extern const char *letters[];
Run Code Online (Sandbox Code Playgroud)
然后,将实际变量放在1个源文件中.
const char *letters[] = {...};
Run Code Online (Sandbox Code Playgroud)