头文件重复包含问题
2010-11-26 12:05
246 查看
//'class'type redefinition
#ifndef ANIMAL_H_H
#define ANIMAL_H_H
class animal
{
public:
animal();
~animal();
void eat();
void sleep();
virtual void breathe();
};
#endif
原因,当编译器编译X03.CPP文件时,因为在文件中包含了animal.h头文件,编译器展开这个头文件,知道animal这个类定义了,接着展开fish.h头文件,而在fish.h头文件中也包含了animal.h,再次展开animal.h,于是animal这个类就重复定义了。
我们一般用#define定义一个宏,是为了在程序中使用,是程序更加简洁,维护更加方便,然而在此处,我们只是为了判断ANIMAL_H_H是否定义,以此来避免类重复定义,因此我们没有为其定义某个具体的值。在选择宏名时,要选用一些不常用的名字,因为我们的程序经常会跟别人写的程序集成,如果选用一个很常用的名字(例如:X),有可能会造成一些不必要的错误。
#ifndef ANIMAL_H_H
#define ANIMAL_H_H
class animal
{
public:
animal();
~animal();
void eat();
void sleep();
virtual void breathe();
};
#endif
原因,当编译器编译X03.CPP文件时,因为在文件中包含了animal.h头文件,编译器展开这个头文件,知道animal这个类定义了,接着展开fish.h头文件,而在fish.h头文件中也包含了animal.h,再次展开animal.h,于是animal这个类就重复定义了。
我们一般用#define定义一个宏,是为了在程序中使用,是程序更加简洁,维护更加方便,然而在此处,我们只是为了判断ANIMAL_H_H是否定义,以此来避免类重复定义,因此我们没有为其定义某个具体的值。在选择宏名时,要选用一些不常用的名字,因为我们的程序经常会跟别人写的程序集成,如果选用一个很常用的名字(例如:X),有可能会造成一些不必要的错误。
相关文章推荐
- 个问题: 1、头文件重复包含 2、头文件加了ifndef条件预处理指令为什么还会定义
- [C++]头文件重复包含问题
- C++类的设计习惯及头文件重复包含问题的解决
- VC++深入详解笔记 C++类的设计习惯及头文件重复包含问题的解决
- 关于头文件重复包含以及函数重定义问题
- cocos2d-x 扩充引擎基类功能 引起的头文件重复包含问题的分析
- 头文件中添加了防止重复包含的宏,依旧报重复定义的问题
- 关于C语言中头文件重复包含问题
- 关于头文件重复包含以及函数重定义问题
- 两个问题: 1、头文件重复包含 2、头文件加了ifndef条件预处理指令为什么还会定义
- c语言之头文件包含顺序问题
- 在头文件中用宏定义来避免重复包含,仍然会出现函数重定义的错误
- ThinkPHP中上传文件如何解决重复问题
- 在分文件编程中如何防止头文件重复包含
- struts.xml文件包含于DMI的问题~~~
- 避免头文件重复包含
- 头文件包含时路径问题
- c++:头文件包含问题
- 两头文件相互包含,且内容相互引用问题
- .h和.c和.cpp多文件包含时候发生的多重定义错误问题(转载)