【常见的预处理功能】
- #include
- 头文件保护符
- 条件编译
【预处理器】
编译之前执行的一段程序,可以部分地改变我们所写的程序
举个例子:当预处理器看到#include标记时就会用指定的头文件的内容代替#include
【预处理变量】
不属于命名空间std,由预处理器负责管理
预处理变量有两种状态:已定义和未定义
当用到一个预处理变量时,预处理器会自动地将它替换为实际值。
【头文件保护符】
使用预处理变量以防止头文件被某个文件重复包含。
4个指令:#define、#ifdef、#ifndef、#endif
- #define:把一个名字设定为预处理变量
- #ifdef及#ifndef:检查某个指定的预处理变量是否已经定义
- #ifdef:当且仅当变量已定义时为真
- #ifndef:当且仅当变量未定义时为真
- 一旦结果检查为真,则执行后续操作直至遇到#endif指令为止。
注:预处理变量无视C++关于作用域的规则。
【条件编译】
当不希望对源程序所有内容都进行编译时,我们可以使用“条件编译”。
预处理程序提供了条件编译的功能,条件编译有三种形式:#ifdef 、#ifndef 、#if
1. #ifdef形式的条件编译
#ifdef 标识符 程序段1 #else 程序段2 #endif
注:如果标识符已被#define定义过,则对程序段1进行编译,而不编译程序段2,直到遇到#endif
2. #ifndef形式的条件编译
#ifndef 标识符 程序段1 #else 程序段2 #endif
注:与#ifdef相反,即标识符没有被#define定义过,才编译程序段1。
3. #if形式的条件编译
#if 常量表达式 程序段1 #else 程序段2 #endif
注:如果常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译
原文链接: https://www.cnblogs.com/xzxl/p/7647389.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/261134
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!