写头文件注意
来源:互联网 发布:smtp.163.com ssl端口 编辑:程序博客网 时间:2024/05/01 07:03
在C++中我们写头文件时经常需要#include来包含其他头文件。头文件定义的实体经常使用其他头文件的设施。
包含其他头文件是如此的司空见惯,甚至一个头文件被多次包含进同一源文件中也不是什么稀奇的事。例如一个头文件中用到string类型的变量,而包含这个头文件的源文件中也用到string类型的变量,这个时候string头文件就被包含了两次:一次是通过程序本身直接包含,另一次是通过包含自写头文件而间接包含。
因此,设计头文件的时候,应该使其可以多次包含在同一源文件中,这一点是很重要的。我们必须保证多次包含同一头文件不会引起该头文件的类和对象被多次定义。使得头文件安全的通用做法是使用预处理器定义的头文件保护符。头文件保护符用于避免在已经见到头文件的情况下重新处理该头文件的内容。
在编写头文件之前,我们需要引入一些额外的预处理器设施。预处理器允许我们自定义变量。
为了避免命名冲突,预处理器变量经常用全大写字母表示。预处理器变量有两种状态:一定义和未定义。定义预处理器变量和检测器状态所用的预处理器指示不同。#define指示接受一个名字并定义该名字为预处理器变量。#ifndef指示检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么跟在其后面的所有指示都被处理,直到出现#endif。为了保证头文件在给定的源文件中只处理一次,我们首先检测#ifndef。第一次处理头文件时,测试会成功,因为相应的预处理器还未定义。下一条语句就定义了该预处理器变量。那样的话,如果我们编译的文件敲好又一次包含了该头文件,#ifndef指示会发现该预处理器已经定义,并且忽略该头文件的剩余部分。
当没有两个头文件定义和使用同名的预处理器变量时,这个策略相当有效。我们可以用定义在头文件里的实体(如类)来命名预处理器变量来避免预处理器变量重名的问题。
注意:头文件应该包含有保护符,即使这些头文件不会被其他头文件包含。编写头文件保护符并不难,而且如果头文件被包含多次,它可以避免难以理解的编译错误。
- 写头文件注意
- 关注C++细节——写头文件注意
- 写模板代码时需要注意头文件引入顺序
- kinect头文件注意
- 注意头文件路径
- 头文件注意
- 头文件怎么写
- 如何写头文件
- winsock头文件包含注意
- 写文件的头文件
- 写 C 语言 头文件
- 头文件应该怎么写
- win32汇编头文件的编写注意
- c++头文件包含注意要点
- c++头文件包含注意要点
- C++中的头文件和源文件:如何写头文件
- C++中的头文件和源文件:如何写头文件
- C++中的头文件和源文件:如何写头文件
- Wordpress 安装Plugin是报错“To perform the requested action, WordPress needs to access your web server”
- 我的三色2016
- Single Number
- Retrofit学习教程(4)-Multiple Query Parameters of Same Name
- 随机化的二叉搜索树总结(treap,随机输入)
- 写头文件注意
- auth-plug.so: undefined symbol: EVP_MD_CTX_free 解决方法
- ffmpeg / avconv是通用的视频/音频编解码命令行工具【转】
- 让vsftpd开机的时候能自动运行
- poj 2065 SETI (高斯消元)
- java 生成json与解析
- Java学习(二)Static关键字的理解
- CentOS6.6环境安装PHP5.6超级详细笔记
- vs下inl中的函数提示C2084 已有主体的解决方案