考虑以下 C++11 程序:
翻译单元#1:
int x = 3;
int main() {}
翻译单元#2:
int x = 4;
这个程序格式不正确吗?为什么/为什么不?
gcc 抱怨说:
error: multiple definition of `x'
我能看到的唯一相关规则是在 3.2.4 中:
每个程序都应包含该程序中 odr 使用的每个非内联函数或变量的准确定义
但是x
程序中没有使用 odr。(或者是吗?)
这是一个 gcc 错误吗?还是我在标准中遗漏了什么?