1

次の 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のバグですか?または、標準に何か欠けていますか?

4

2 に答える 2