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种方式增加了更多的重复定义.该怎么办???????
但是在Release下编译,所有用到这些全局变量或函数的地方都是重复定义了.做了如下修改:
1.#ifndef SYS_FILE
#define SYS_FILE
#include "a.h"
#endif2.#pragma once
#include "a.h" 3.分别把上述两种包含方式放到各个使用了全局变量或函数的.cpp文件中,不放在stdafx.h第1,2种方式与未修改前错误一样,第3种方式增加了更多的重复定义.该怎么办???????
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
修改让你的Release和Debug的工程设置一样
用的时候加extern声明就可以了
.h文件中尽量不要#include .h 文件
这样不太好