什么是C代码中的错误?

时间:2011-09-10 12:30:09

标签: c

我有这样的代码:

#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为什么会抛出错误? 提前谢谢。

3 个答案:

答案 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”关键字是告诉编译器“这个变量是在其他地方定义的,只需使用它并相信它在链接时可用。”