linux编译的异常?

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; }