extern int a;
int a = 1;
int main(void)
{
return 0;
}
这是UB吗?标准在6.2.2/7中说
如果在一个翻译单元中,相同的标识符同时出现在内部和外部 链接,行为未定义。
最佳答案
这是完美定义的行为。这就是包含 header 后编译器在预处理后得到的结果。
你的困惑似乎来自于:
int a = 1;
没有内部链接。在文件范围 a
有外部链接。如果添加了 static
说明符,它将具有内部链接。
关于c - 在翻译单元中使用 extern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14499689/