VS下头文件使用注意事项

1、防止循环包含

A.h中写#include "B.h"
在A.h中可以直接定义类B的对象;比如 B m_b;
而在B.h中不能直接写#include "A.h"
应该写
class A;//声明B是一个外部类。这个必须要用,不能只用#include "A.h",如果只是#include "A.h"而没有class A;则会报错.

Class B
{
A *pA;//声明一个指向A类对象的指针
};
然后在B.cpp中加入#include "A.h"
再在B的构造函数中,使用new方式对pA进行实例化,构建A的类对象,并通过pA在程序中访问

2、防止重复包含

是为了避免同一个文件被include多次使用,
1)、#pragma once(比较常用)
这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次
#pragma once用来防止某个头文件被多次include,#ifndef,#define,#endif用来防止某个宏被多次定义。
#pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了。
#ifndef,#define,#endif这个是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式
2)、使用条件编译

#ifndef _HEADERNAME_H
#define _HEADERNAME_H
...//(头文件内容)
#endif

当头文件第一次被包含时,它被正常处理,符号_HEADERNAME_H被定义为1。如果头文件被再次包含,通过条件编译,它的内容被忽略。符号_HEADERNAME_H按照被包含头文件的文件名进行取名,以避免由于其他头文件使用相同的符号而引起的冲突。但是,必须记住预处理器仍将整个头文件读入,即使这个头文件所有内容将被忽略。由于这种处理将拖慢编译速度,所以如果可能,应该避免出现多重包含。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值