头文件的终极书写原则(转自百度博客)
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文件)是单独编译的,经过以上处理,每个源文件内部都不会重复包含类的定义这些东西了。
//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文件)是单独编译的,经过以上处理,每个源文件内部都不会重复包含类的定义这些东西了。
相关文章推荐
- 百度一下这个文件
- 关于博客的书写——读刘末鹏博客学习方法篇有感
- 【公告】如果发现博客中图片或文件丢失,请在本贴中回复中贴上URL
- 利用反射实现一个Java文件书写多个Servlet,无框架
- .pcd文件的书写格式
- IOS博客项目搭建-04-对文件按照功能模块结构、MVC进行分层
- 8个学习.net的博客链接 (以前收藏过更多的,被百度新版搞没了,恨死了)
- 百度博客 艺术思想20
- firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作
- 百度CSND博客在搜索栏中显示图片
- 文件下载与应用更新系列博客一:基本功能实现
- Windows上安装Emlog博客时出现错误“配置文件(config.php)不可写”
- PHP实现抓取百度搜索结果页面【相关搜索词】并存储到txt文件示例
- log4j配置文件的书写
- 百度webUploader上传jpg文件出错
- Python3 大型网络爬虫实战 002 --- scrapy 爬虫项目的创建及爬虫的创建 --- 实例:爬取百度标题和CSDN博客
- 让百度、GOOGLE、搜狗、有道等搜到你的博客
- Word 2007 发布功能书写CSDN博客
- Ghost 博客系统终极安装教程,装不上来打我!