程序中有一些全局变量,我把他们放在一个头文件中:global.h
#ifndef GLOBAL_H
#define GLOBAL_HSOCKET g_srvSocket;CPtrList g_threadList;...#endif
然后在其他cpp文件中为了引用这些全局变量,包含了头文件global.h比如在ServerDlg.cpp中:#include "global.h"结果报错:Linking...
global.obj : error LNK2005: "unsigned int g_srvSocket" (?g_srvSocket@@3IA) already defined in ServerDlg.objglobal.obj : error LNK2005: "class CPtrList g_threadList" (?g_threadList@@3VCPtrList@@A) already defined in ServerDlg.obj....

解决方案 »

  1.   

    加上 extern 另外,你还需要在定义的时候初始化一下。
      

  2.   

    请大侠指教啊(是不是不能包含头文件,而要用extern ... 这种方式呢?)
      

  3.   

    加上extern也会报同样的错,除非把#include "global.h"注释掉。就是觉得用extern引用一个个全局变量很麻烦,所以才把全局变量都放到一个头文件中,引用这个头文件就好的,但还是不行。
      

  4.   

    头文件应该只声明,不定义
    用extern static
      

  5.   

    哦,明白了,多谢大侠。不过为什么用extern static而不是extern?static起什么作用?
      

  6.   

    全局变量 .h中要用extern 声明,但是创建应该在CPP中创建。LZ的问题是老问题了 :)