C/C++语言中头文件的保护宏

什么是保护宏


保护宏就是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,则prote ct_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

因此,只要文件名不同,保护宏的名字也就不一样了。
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机科学的一门重要课程,主要研究的是将高级语言编写的程序转化为计算机能够理解和执行的机器语言的过程。而C/C++是一种广泛应用的高级编程语言,其编译原理与其他编程语言相似。 C/C++的编译原理包括了多个步骤。首先,预处理器会对源代码进行处理,包括展开、头文件包含以及条件编译等。接下来,编译器将转化预处理后的代码为汇编代码。然后,汇编器将汇编代码转化为可重定位的机器代码。最后,链接器将可重定位的机器码和库文件等结合,生成最终的可执行文件。 在编译过程,编译器会进行语法分析和语义分析。语法分析主要是通过词法分析、语法分析和语法制导翻译等步骤,将源代码转化为语法树。语义分析是对语法树进行分析,检查语法的正确性,并进行类型检查等。 在编译过程,还会进行优化。优化主要分为前端优化和后端优化。前端优化是在源代码转化为间表示形式之前进行的优化,包括常量折叠、公共子表达式删除等。后端优化是在间表示形式转化为目标代码之前进行的优化,包括指令调度、寄存器分配等。 总的来说,C/C++的编译原理是一个复杂的过程,涉及到词法分析、语法分析、语义分析、优化等多个步骤。通过这一过程,将高级语言编写的程序转化为计算机能够执行的机器语言,从而实现程序的正确执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值