Мне любопытно узнать об этом факте, поскольку я придумал следующий код:
namespace
{
int my_variable = 12;
void get_data_a_lot() {}
}
int main()
{
my_variable++;
get_data_a_lot();
}
и скомпилировал с msv c Я получаю следующее:
00E 00000000 SECT4 notype External | ?my_variable@?A0x087c0a53@@3HA (int `anonymous namespace'::my_variable)
025 00000000 SECT6 notype () Static | ?get_data_a_lot@?A0x087c0a53@@YAXXZ (void __cdecl `anonymous namespace'::get_data_a_lot(void))
Но когда я компилирую с g cc, я получаю следующее:
002 00000000 SECT2 notype Static | _ZN12_GLOBAL__N_111my_variableE
003 00000000 SECT1 notype () Static | _ZN12_GLOBAL__N_114get_data_a_lotEv
Итак, вопрос в том, правильно ли поведение my_variable является External или ошибка компилятора?