次の C++11 プログラムを検討してください。
翻訳単位 #1:
int x = 3;
int main() {}
翻訳単位 #2:
int x = 4;
このプログラムは形式が正しくありませんか? なぜ/なぜではないのですか?
gcc は次のように訴えています。
error: multiple definition of `x'
関連するルールは 3.2.4 のみです。
すべてのプログラムには、そのプログラムで ODR で使用されるすべての非インライン関数または変数の定義が 1 つだけ含まれている必要があります。
しかしx
、プログラムでは使用されていません。(またはそれは?)
これはgccのバグですか?または、標準に何か欠けていますか?