C++编程规范 以C++17的标准勘误 C1

本文介绍了C++编程中关于头文件的最佳实践,包括使用#define防止多重包含,减少头文件依赖通过前置声明,以及在.h和.cpp文件中正确处理命名空间的导入。
摘要由CSDN通过智能技术生成

这些材料是多年前一些编程人员编写的C++经验。用C++17的经验,重新。

 

1. 头文件规则


通常每一个.cpp 文件对应一个.h 文件,当然也有特列,main 函数入口 cpp 文件没有对应的.h, 只有纯虚函数的接口类只有.h 文件没有.cpp。
 

1.1.#define 防止多重包含

所有头文件都应该使用#define 防止头文件被多重包含,这个多重包含指的是一个 cpp 编译过程中不被多次包含,如果有多个 cpp 都调用,那这个文件还 是会被包含多次,所有头文件中不要做定义。

命名格式如果是普通的业务逻辑类的代码比如 x_msg_task.h 的文件就直接定义 X_MSG_TASK_H,如果是做类库或者公用的库,把项目名称加在前面。

实例: 在 x_msg_task.h 头文件中:

#ifndef X_MSG_TASK_H

#define X_MSG_TASK_H

//你的声明代码

#endif

更新实例

x_msg_task.h头文件中使用#pragma once,如下:

#pragma once // 你的声明代码 

1.2.减少头文件依赖
使用前置声明(forward declarations)尽量减少.h 文件中#include 的数量。

当一个头文件被包含的同时也引入了一项新的依赖(dependency),只要该头文件被修改 , 代码就要重新编译。如果你的头文件包含了其他头文件,这些头文件的任何改变也将导致那些包含了你的头文件的代码重新编译。因此,我们宁可尽量少包含头文件,尤其是那些包含 在其他头文件中的。

比如用到 XThread 类的指针,在头文件中可以不#include 类文件,而是直接用 class XThread;的声明,但如果类中定义的是实体对象,那就必须要引入头
文件。

在.h 中尽量不引用头文件,在.cpp 中引用。

1.3.头文件中不导入命名空间
头文件中不调用 using 导入命名空间,调用是直接写命名空间比如std::string str;

命名空间导入在.cpp 中做,因为你没法确认你的.h 会被什么样的文件调用,会不会参数命名冲突。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值