多文件中全局变量的有关问题

多文件中全局变量的问题

a.h文件中:
#include <iostream>
using namespace std;
double sale = 0;
...
...
//一些定义
a.cpp中:
#include <a.h>
...
...
//一些实现

main.cpp中:
#include "a.h"
int main()
{
//一些调用
}



这段代码当我编译的时候,会提示sale重复定义。为什么会重复定义? 在main.cpp中  不是用a.h中的文件内同来替换#include 么? 怎么会重复定义呢?

------解决方案--------------------
头文件中的数据
用#ifndef .
#define
 ..
#endif
来做就可以防止重复定义的问题
------解决方案--------------------
全局变量的定义放在头文件会导致重定义,可把定义放在源文件,声明放在头文件。
------解决方案--------------------
头文件会被展开到引用它的.cpp文件中,
a.cpp中展开一次
main.cpp中又展开一次
就定义了2次了
------解决方案--------------------
二楼正解!据说Windows也是这样做的。