Связывание глобальных переменных c & c ++ по умолчанию, проблема множественного объявления и определения

Например:

code1.c / .cpp

int a;

// ... and so on

code2.c / .cpp

int a;

int main(void) {
    return 0;
}

перейти к компиляции:

$gcc code1.c code2.c      # this is fine
$

$g++ code1.cpp code2.cpp  # this is dead
/tmp/ccLY66HQ.o:(.bss+0x0): multiple definition of `a'
/tmp/ccnIOmPC.o:(.bss+0x0): first defined here
collect2: ld returned 1 exit status

Есть ли разница в связывании глобальных переменных между C и C ++?

27
задан Bossliaw 16 June 2011 в 11:27
поделиться