📜  C++预处理器(1)

📅  最后修改于: 2023-12-03 14:59:52.490000             🧑  作者: Mango

C++预处理器

在C++中,预处理器是一种特殊程序,它负责将源代码中的指定字符序列替换为另一字符序列。预处理器指令都以字符 # 开头,用于告诉编译器在编译源代码之前要做些特定的事情,比如定义常量、包含头文件、开启某些编译选项等。

常用预处理器指令

#define

使用 #define 宏定义指令可以定义一个常量或宏。格式如下:

#define identifier replacement

其中 identifier 是常量的名称,replacement 是常量的值。例如:

#define PI 3.1415926
#define MAX(a,b) ((a)>(b)?(a):(b))

第一个宏定义了常量 PI,第二个宏定义了一个带参数的宏 MAX,它会返回两个参数中较大的数。

#include

使用 #include 头文件指令可以在当前文件中插入一个头文件的内容。格式如下:

#include <filename>
#include "filename"

其中 <> 表示系统头文件,包含在标准库中,而 "" 表示用户头文件,包含在用户我们自己编写的文件中。例如:

#include <iostream>
#include "myHeader.h"

第一个指令包含了标准库中的 iostream 文件,第二个指令包含了我们自己编写的 myHeader.h 文件。

#ifdef、#ifndef、#endif

使用 #ifdef#ifndef#endif 条件编译指令可以根据宏定义的条件来判断是否编译某些代码。格式如下:

#ifdef identifier
   // 代码块1
#else
   // 代码块2
#endif

#ifndef identifier
   // 代码块1
#else
   // 代码块2
#endif

其中 #ifdef 判断宏定义是否被定义,#ifndef 判断宏定义是否未定义。例如:

#define DEBUG 1

#ifdef DEBUG
   // 执行调试代码
#else
   // 执行正式代码
#endif

#ifndef DEBUG
   // 执行正式代码
#else
   // 执行调试代码
#endif

#undef

使用 #undef 取消一个预定义的宏定义。格式如下:

#undef identifier

例如:

#define PI 3.1415926
#undef PI
参考资料