关于C++引用头文件 重定义的问题
环境VS2010 建的MFC工程xxx
在自动生成的文件 xxxDlg.cpp里面 include A.h 和 B.h 两个头文件
然后还有个A.cpp include A.h A.h里面声明的函数 A.cpp里面定义的函数
然后问题是。
如果我在xxxDlg.cpp 和 A.cpp 里面 同时include B.h 这时编译就会出现重定义错误
一定要去掉一个才能正常编译。。这是怎么回事啊。。。
我A.h B.h 都加有 #pragma once 怎么还会重定义呢。。这个不是防止重定义的么。。后来我连A.cpp里面都加上#pragma once 也是重定义。。到底应该怎么做呢?
[解决办法]
B.h里不要有任何定义,不单单是函数的定义,还有变量的定义,比如
int a = 3;
这也是不允许的,必须改成这样
//头文件
extern int a;
//cpp文件
int a = 3;