C++ c语言中的Extern关键字问题

C++ c语言中的Extern关键字问题,c++,keyword,extern,C++,Keyword,Extern,在这种情况下,即使变量I是在add函数中定义的,也会出现错误 但在以下情况下,它不会给出构建错误 extern int i; void add(); int main() { add(); if (i == 0) printf("scope rules\n"); } void add() { int i; } extern关键字告诉编译器假定变量是在其他地方定义的,而不是在这个特定的文件或翻译单元中。变量的名称将在链接阶段解析 所以当你写作时: 外部

在这种情况下,即使变量I是在add函数中定义的,也会出现错误

但在以下情况下,它不会给出构建错误

extern int i;
void add();

int main()
{
    add();
    if (i == 0)
        printf("scope rules\n");
}

void add()
{
    int i;
}
extern关键字告诉编译器假定变量是在其他地方定义的,而不是在这个特定的文件或翻译单元中。变量的名称将在链接阶段解析

所以当你写作时:

外部国际一级

您必须确保变量i是在其他文件的其他位置定义的

注意不要混淆add函数中的extern i和local i,这个局部变量在add函数中有作用域,与extern i变量无关

extern int i;
void add();

int main()
{
    int i;
    //add();
    if (i == 0)
        printf("scope rules\n");
}

void add(){
    //int i;
}

你需要读一本关于C或C++的书,这将详细解释这个问题。
void add()
{
    int i;
}