extern int i;
void add();
int main()
{
add();
if (i == 0)
printf("scope rules\n");
}
void add()
{
int i;
}
在这种情况下我得到错误,即使变量i在add function
中定义但在以下情况下它不会产生构建错误
extern int i;
void add();
int main()
{
int i;
//add();
if (i == 0)
printf("scope rules\n");
}
void add(){
//int i;
}
答案 0 :(得分:2)
extern
关键字告诉编译器假设变量是在别处定义的(不在此特定文件或转换单元中)。变量的名称将在链接阶段解析。
所以当你写:
extern int i;
您必须确保变量i
在别处(在不同的文件中)定义。
请注意不要在您的i
函数中混淆extern i
和本地add
- 此局部变量的范围在add
函数内且无关使用extern i
变量。
void add()
{
int i;
}