您的位置:首页 > 其它

头文件的终极书写原则(转自百度博客)

2010-08-06 17:01 232 查看
如有a.h和b.h,内容如下

//a.h

#ifndef A_H
#define A_H
#include "1.h"
#include "2.h"
struct STU
{
int x;
int y;
};
#endif

//b.h
#ifndef B_H
#define B_H
#include "2.h"
struct STU
{
int x;
int y;
};
#endif

在某源文件(x.cpp)中要用到以上两个头文件,就发现问题了!虽然两个头文件自身都做了防多次包含的处理,但a.h和b.h有相同的STU定义部分,被源文件包含进去后变成定义两次了,编译肯定报错。所以,书写头文件的最终原则:
我们要保证,所有的头文件里,凡是不能被其它源文件(x.cpp)多次包含的东西都不存在被重复包含的机会。例如上例,可将STU结构体的定义放在一个单独的源文件中并对那个源文件做预编译处理。也可以在两个头文件中对STU的定义做一模一样的处理,都这样写,
#ifndef STU_H
#define STU_H
struct STU
{
int x;
int y;
};
#endif

编译时,所有源文件(一堆*.cpp文件)是单独编译的,经过以上处理,每个源文件内部都不会重复包含类的定义这些东西了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: