C/C++语言中头文件的保护宏
2016-04-09 11:36
309 查看
什么是保护宏
保护宏就是C/C++头文件开始处的宏判断和宏定义,可以避免该头文件被多次加载执行而导致编译错误的宏。示例代码如下:
#ifndef __PROTECT_TEST_H #define __PROTECT_TEST_H #define SUCCESS 1 #define FAILED 0 #endif /*__PROTECT_TEST_H*/
上述代码所在的头文件名是“protect_test.h”,代码片段中第1、2和7行就是保护宏的实现。
保护宏的作用
使用保护宏可以避免一个头文件被多次包含而造成的编译错误。例如:上述代码片段中,如果我们没有使用保护宏,而定义了宏“SUCCESS”和宏“FAILED”,则“protect_test.h”文件不能被多次包含,否则编译时会提示变量重复定义的错误。而当加上保护宏之后,第一次包含该头文件时,代码片段第1行判断宏“__PROTECT_TEST_H”的时候该宏还没有定义,程序会继续往下执行,代码片段第2行就会定义“__PROTECT_TEST_H”宏,这样,当第二次包含时,保护宏就会起作用,代码片段第1行判断时发现“__PROTECT_TEST_H”宏已经被定义,就不会继续往下执行了,这样后面的代码就无效了,进而避免了编译时出现的重复定义的错误。保护宏的命名规则
每个头文件中保护宏的名字(如示例代码片段中的“__PROTECT_TEST_H”)应当不同。如果相同,则具有相同保护宏的头文件不能被同一个C文件包含。因此,需要制定保护宏的命名规则,其规则如下:1.以文件名为基础构建宏名,比如示例文件名为“protect_test.h”
2.将文件名中的“.”转换成“_”,成为“protect_test_h”
3.全部字符转换成大写,成为“PROTECT_TEST_H”
4.最后在前面添加两个“_”,成为完整的保护宏“__PROTECT_TEST_H”
因此,只要文件名不同,保护宏的名字也就不一样了。
相关文章推荐
- 【C++】引用MFC指针的获取
- C语言结构体内含有数组,该结构体作为参数传递时需用指针,否则对数组的修改不会被记录
- 【C语言】编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替
- CSP考试 2015年03月第3题 节日 C语言实现
- C++中的头文件和原文件
- C++ - STL- vector
- 【C语言】C语言的const与C++的const区别
- 【C语言】总结C语言深度剖析
- 【动态规划】最长公共子序列(并续)
- C++ 访问范围说明符
- C++异常处理机制几种方法
- c++中栈与队列的实现
- C++四种类型转换的关键字及其特点
- c++第3次实验—作业
- IIS7安装PHP-5.3.27教程, Visual C++ 2008(x86,x64)
- 以前用C语言编写的生成随机数的猜数字小游戏
- NOI 193棋盘分割.cpp
- 最小二乘法拟合直线
- C++ STL中Map的按Key排序和按Value排序
- C/C++——strcpy函数的实现