现在遇到一个比较烦的问题
例如一些结构以及很多常量我定义在一个单独的头文件A里
但是某些类要用到这些结构,所以在这些类各自的头文件里就包含了这个头文件A,
然后在另一个类里,我要包含上面说的的那些类的头文件,所以就产生了C2011重复定义错,请问有什么好办法解决。
例如一些结构以及很多常量我定义在一个单独的头文件A里
但是某些类要用到这些结构,所以在这些类各自的头文件里就包含了这个头文件A,
然后在另一个类里,我要包含上面说的的那些类的头文件,所以就产生了C2011重复定义错,请问有什么好办法解决。
解决方案 »
- mfc中InitializeCriticalSectionAndSpinCount' : undeclared identifier
- PNG图片镜像、90°旋转
- vc网络通讯的问题(100分)
- 黑:北京利达智通为何这般招聘人?
- 宽字符转窄字符问题
- 求助!! vc出问题了!
- (50分)求助:数据库中进行文件的检索和拷贝速度问题 急!急!
- 如何改变背景色和字的颜色?
- 为什么用detours不可以截获全局messagebox?
- 小白,小白,小白,求!求!求!大神关于VS2013多线程!求!求!求!大神关于VS2013多线程!求!求!求!大神关于VS2013多线程!
- 如何让滚动条自动滚动?
- 请问:在vc中怎么用stl??
class A:public ABase
{
};//---------file:b.h---------#include "a.h"
class ABase
{
};class B
{
A m_a;
};
把你写的那个头文件,包含在stdafx.h里面
然后在你需要使用哪些定义的时候,包含stdafx.h
class ABase
{
};class B
{
A m_a;
};
#include "a.h"
class ABase
{
};class B
{
A m_a;
};
例如有一个结构
struct mystr{
int a;
double b;
}
很多文件都会用到这个结构,现在这个结构放在a.h里现在
b.h文件中
#include "a.h"c.h文件中
#include "a.h"然后在d.cpp中又有
#include "b.h"
#include "c.h"现在就有重复定义的错误了,应该怎么办?
#pragma once---------
++C++
---------
只能:
(1)定义数据类型
class
struct
deftype
(2)声明函数
void fun(int,int);
(3)声明外部变量
extern int x5;
(4)定义常量宏
#define
(5)声明数据类型
class MyClass;
(6)const常量
const double PI = 3.14159;不能:
(1)定义变量
int x;
MyClass* pClass;
(2)定义函数
void fun(int x,int y)
{
return;
}
你的做法是对的,不过我发现只需要在我定义那个结构的地方,也就是说上面
我举的例子中的a.h中最前面加#pragma once就行了,其他的地方应该不用。to iicup(双杯献酒):
我的确是在头文件中定义了struct呀,那就是对的呀,只是这个struct会被很多
其他类的头文件用到,而这些类的头文件又在别的地方会一起include,所以才
造成重复定义的问题。
典型的方法:#ifndef MY_FILENAME_H
#define MY_FILENAME_H// 内容
#endif // MY_FILENAME_H
#define
…………
#endif