linux编译的错误?? 对linux的g++编译选项不太了解,麻烦哪位知道的可以帮忙一下,问题是大致是这样的:我建立
linux编译的错误??
对linux的g++编译选项不太了解,麻烦哪位知道的可以帮忙一下,问题是大致是这样的:我建立了三个文件
/*lib.h*/
int gg;
/*lib.c*/
#include "lib.h "
/*main.c*/
#include <stdio.h>
#include "lib.h "
int main( int argc, char * argv[] )
{
gg++;
return 0;
}
当我这样编译的时候:gcc main.c lib.c -o main,没有错误,但如果换成了C++,如下
g++ main.c lib.c -o main,就会出现这样的一个问题
/tmp/cccopPL5.o:(.bss+0x0): multiple definition of `gg '
/tmp/ccQT3KBA.o:(.bss+0x0): first defined here
希望哪位可以解释一下,谢谢!!!!
[解决办法]
把全局变量的定义放到了头文件里,导致重复定义错误
[解决办法]
.h里只声明extern int gg;不定义,某个.c里再定义一次gg。
[解决办法]
- C/C++ code
/*lib.h*/ extern int gg; /*lib.c*/ #include "lib.h " int gg;/*main.c*/ #include <stdio.h> #include "lib.h " int main( int argc, char * argv[] ) { gg++; return 0; } 