【发布时间】:2011-09-16 07:05:53
【问题描述】:
例如:
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++之间有没有全局变量链接的区别?
【问题讨论】:
-
您可以通过使用
static或(最好)无名命名空间来避免 C++ 中的问题,但这不是您的问题。恐怕我对 C 链接规则(而不是 C++)不够熟悉,无法回答这个问题。 -
抱歉暂时离开键盘,我还是新手,我开始复习我提出的问题...
标签: c++ c linkage multiple-definition-error one-definition-rule