用以下代码编译文件 main.c:
gcc main1.c -o final
给我:
/tmp/cc1cwhAP.o: In function `main':
main1.c:(.text+0xb): undefined reference to `hi'
main1.c:(.text+0x15): undefined reference to `hi'
collect2: ld returned 1 exit status
main1.c:
#include <stdio.h>
#include "incl.h"
int main(void)
{
hi = 1;
printf("hi = %d",hi);
return(0);
}
包括.h:
extern int hi;
我做错了什么? (请详细回答你的问题)
删除 extern
关键字可以解决问题,但我希望能够在其他源文件中使用 hi
变量。
最佳答案
您已经告诉编译器存在一个名为hi
的变量,但您实际上并没有定义它。
有两种方法可以解决这个问题:
- 在头文件的声明中删除
extern
关键字。这不好! - 在源文件中声明变量。这可以是您链接到程序中的 main1.c 或另一个源文件。这是个好方法。
关于使用头文件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3976490/