Я проверил следующий код:
в файле a.c/a.cpp
int a;
в файле b.c/b.cpp
int a;
int main() { return 0; }
Когда я компилирую исходные файлы с помощью gcc *.c -o test, он преуспевает.
Но когда я компилирую исходные файлы с помощью g++ *.c -o test, он терпит неудачу:
ccIJdJPe.o:b.cpp:(.bss+0x0): multiple definition of 'a'
ccOSsV4n.o:a.cpp:(.bss+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Я действительно смущен этим. Есть ли разница между глобальными переменными в C и С++?