头文件head.h包含到stdafx.h中
头文件head.h:
int a;
源文件test.cpp
a=1;    //引用head.h中定义的a错误提示:
..."int a" (?a@@3HA) 已经在 MainDlg.obj 中定义...
...fatal error LNK1169: 找到一个或多个多重定义的符号...而head.h如果只包含到test.cpp中 则无此错误求解并希望知道如何定义变量int a;使得head.h包含到stdafx.h中合法

解决方案 »

  1.   

    在头文件中定义(其实是声明)变量都要加一个exetern int a;
    然后再在一个cpp中定义 int a = 0;
    然后如果在其他.h或者.cpp中使用a的话,只要再 extern int a;就可以了,注意不要赋值。否则就是定义不是声明了,就会重复定义
      

  2.   


    ++头文件里写变量只能是extern和static两种extern每个cpp共享数据static数据分离,每个cpp复制一份
      

  3.   

    test.cpp文件是你要编译的文件,,.h文件包括一些函数和变量声明,以及宏定义,主要功能还是包含一些已经实现好的函数,因此当然不能再不同的两个.h文件中定义同一个变量h 咯。所以就提示重定义。“求解并希望知道如何定义变量int a;使得head.h包含到stdafx.h中合法“个人认为不可以的吧
      

  4.   

    我建议你看书,C++ Primer里边讲得很详细。
      

  5.   

    test.cpp文件是你要编译的文件,,.h文件包括一些函数和变量声明,以及宏定义,主要功能还是包含一些已经实现好的函数,因此当然不能再不同的两个.h文件中定义同一个变量h 咯。所以就提示重定义。