我有这样的代码:
#include<stdio.h>
int main()
{
extern int i;
i = 20;
printf("%d\n", sizeof(i));
return 0;
}
我收到这样的错误:
In function `main':
undefined reference to `i'
即使我已经定义i
为什么会抛出错误?
提前谢谢。
答案 0 :(得分:3)
您已声明i在单独的文件中定义,但尚未链接到外部文件。
如果删除extern关键字,这将按预期工作。
答案 1 :(得分:1)
extern关键字声明一个变量或函数并指定它 它有外部链接(其名称可从除。之外的文件中看到) 一个在其中定义的)。修改变量时,extern 指定变量具有静态持续时间(在何时分配) 程序结束时程序开始并取消分配)。该 变量或函数可以在另一个源文件中定义,或者稍后定义 在同一个文件中。文件中变量和函数的声明 范围是默认的外部。
i
定义在哪里?
试试这个。
#include<stdio.h>
int main()
{
int i;
i = 20;
printf("%d\n", sizeof(i));
return 0;
}
答案 2 :(得分:0)
“extern”关键字是告诉编译器“这个变量是在其他地方定义的,只需使用它并相信它在链接时可用。”