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

如有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文件)是单独编译的,经过以上处理,每个源文件内部都不会重复包含类的定义这些东西了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值