高质量C++编程(一)防止头文件重复引用

【规则1-2-1】为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。
 
一、为什么会出现头文件被重复引用的问题
     在一个CPP文件中,可以包含多个头文件,而头文件间又是可以相互引用的,这就导致一个CPP文件中可能间接多次包含某个头文件,如果头文件中 没有防止 多次编译的语句,就会出现头文件被重复定义的编译错误
二、怎么防止 头文件被重复引用
      1、使用 ifndef/define/endif 结构产生预处理块
            适用条件:在任意编译环境都可以使用
      2、使用 #pragma once
            适用条件:在微软的开发工具上的使用
三、命名规则
       一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线
四、举例
#ifndef方式
/********************************************************************
    created:    	2013/06/16   23:01
    Filename:   	Test.h
    author:     	Neo
*********************************************************************/
#ifndef _TEST_H__
#define _TEST_H__

class Test
{
public:
	Test();
	~Test();


private:
	int		m_nCount;

};
#endif


#pragma once方式
/********************************************************************
    created:    	2013/06/16   23:01
    Filename:   	Test.h
    author:     	Neo
*********************************************************************/
#pragma 

class Test
{
public:
	Test();
	~Test();


private:
	int		m_nCount;

};


五、执行过程
        头文件_TEST_H第一次执行时,还没有被define,则满足#ifndef_TEST_H的条件,
执行它下面的内容 #define_TEST_H 和 Test类的声明;
之后再编译到该头文件时,由于已经定义了_TEST_H了,所以语句#ifndef_TEST_H 不执行,
而执行#endif的语句,这里没有语句,就直接结束了
因此,在某一个cpp文件中,多次包含了#include<Test.h>时,就不会出现头文件被重复定义的编译错误了
 
注:
1、Test.h文件的组成:
  (1)头文件开头处的版权和版本声明。
  (2)预处理块。
  (3)函数和类结构声明等。
2、Test.cpp文件的组成:
  (1)定义文件开头处的版权和版本声明。
  (2)对一些头文件的引用。
  (3)程序的实现体(包括数据和代码)
3、头文件的作用:
   (1) 通过头文件来调用库功能
        在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。
   (2) 头文件能加强类型安全检查
        如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值