gcc错误:未定义引用***

Sat*_*aha 2 c gcc

在我的主.c文件中,我定义NUMBER为:

#define NUMBER '0'
Run Code Online (Sandbox Code Playgroud)

在另一个.c文件2中,我已将其声明为"extern int"变量并使用它.但是在编译gcc时会出现以下错误消息:

/tmp/ccsIkxdR.o: In function `file2':
file2.c:(.text+0xfd): undefined reference to `NUMBER'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

请建议我一个出路.提前致谢.

Som*_*ude 9

当您使用时#define,为预处理器定义一个宏.此宏仅在您定义的源文件中可见.没有其他源文件将看到此宏定义,并且预处理器将无法在其他源文件中为您扩展宏,因此编译器会看到符号NUMBER,它没有任何此类符号的声明.

要解决这个问题,您有两种选择:

  1. 将宏放在两个源文件中包含的头文件中.
  2. 定义NUMBER为适当的变量而不是宏,然后extern在另一个源文件中声明.

  • @KlasLindbäck是的,用两种解决方案更新了我的答案.:) (2认同)