Debug下定义了全局变量和函数,全部定义在一个头文件(a.h)中,在stdafx.h中包含了这个头文件.Debug下编译没有问题.
但是在Release下编译,所有用到这些全局变量或函数的地方都是重复定义了.做了如下修改:
1.#ifndef   SYS_FILE   
#define   SYS_FILE      
#include "a.h"    
#endif2.#pragma   once
#include "a.h" 3.分别把上述两种包含方式放到各个使用了全局变量或函数的.cpp文件中,不放在stdafx.h第1,2种方式与未修改前错误一样,第3种方式增加了更多的重复定义.该怎么办???????

解决方案 »

  1.   

    使用全局变量需要两步1. 在.h中声明     (告诉编译器,有这么个变量)
    2. 在.cpp中定义   (告诉链接器,变量的地址在这里)声明的时候语法为
    extern int g_nXXX;定义的时候
    int g_nXXX = 0;因此,1)
    你的a.h应为
    #pragma  once extern int g_nXX;
    ...////声明所有的全局变量2)
    然后在stdafx.cpp或者任意一个.cpp中
    int g_nXXX = 0;
    ...////定义所有的全局变量3)
    在stdafx.h中包含a.h
      

  2.   

    Release下,增加工程的宏定义 SYS_FILE  
    修改让你的Release和Debug的工程设置一样
      

  3.   

    全局变量不要在头文件定义,直接在cpp文件定义
    用的时候加extern声明就可以了
      

  4.   

    多说一句
    .h文件中尽量不要#include .h 文件
    这样不太好