>>160 gccでconst intの場合を試してみたら、Cの時は実体が作られたけど、 C++の場合は最適化すると実体が消えるみたい。 最適化をしなくても、constを付けるとファイルスコープになるらしく、 hoge.c(cc): extern const int i; int main(void) { return i; } moge.c(cc): const int i = 1; fuga.c(cc): const int i = 2; とすると、Cでコンパイルするとmultiple definition of 'i'に なって、C++でコンパイルするとundefined reference to 'i'に なった。 ちなみに、Cで最適化ありの場合、 static const int i = 0; int main(void) { return i; } をコンパイルすると、return i;はxorになって、iはどこからも 使われていないのに、iの実体だけは作られていた。 Cのこの挙動の理由が分かる人いない?