C++中的预处理指令有哪些(上)?

惊脉互联网求职
2024-12-02

预处理指令是在编译之前由预处理器进行处理的命令。以下是惊脉互联网求职为大家梳理出来的C++常用的预处理指令:


一、#include


1)功能:用于将指定的头文件内容包含到当前源文件中。这使得可以在当前文件中使用头文件中声明的函数、变量、类等。例如,#include <iostream>会将 iostream 头文件的内容包含进来,这样就可以使用cout和cin等标准输入输出流对象进行控制台的输入输出操作。

2)两种形式:

尖括号形式(<>):用于包含标准库头文件。编译器会在系统默认的标准库头文件路径中查找头文件。

例如,<vector>用于引入向量容器相关的声明<fstream>用于文件输入输出相关的操作声明。

双引号形式(""):用于包含用户自定义的头文件。编译器首先会在当前源文件所在的目录中查找头文件,如果找不到,再去系统默认路径查找。比如,如果有自己编写的头文件myheader.h,可以使用#include "myheader.h"来包含它。


二、#define


1)功能:用于定义宏。宏可以是一个常量的替换,也可以是一个简单的代码片段替换。

2)常量定义:例如,#define PI 3.14159定义了一个名为PI的宏,在预处理阶段,代码中所有出现PI的地方都会被替换为3.14159。这种方式可以方便地在代码中使用常量,并且如果需要修改常量的值,只需要修改#define语句即可。

3)函数式宏定义:可以定义类似于函数的宏,例如#define MAX(a, b) ((a) > (b)? (a) : (b)),这个宏接受两个参数a和b,在预处理阶段,代码中出现MAX(x, y)的地方会被替换为((x) > (y)? (x) : (y)),但要注意这种宏定义可能会带来一些副作用,如参数的多次求值等问题。

C++中的预处理指令有哪些(上)?



三、#undef


1)功能:用于取消之前定义的宏。例如,如果之前定义了#define DEBUG,在某些情况下不想再使用这个宏时,可以使用#undef DEBUG来取消它的定义。

分享
下一篇:这是最后一篇
上一篇:这是第一篇