C++预处理器指令是以#开头的文本替换命令,包括#include(插入头文件)、#define(定义宏)、#ifdef/#ifndef(条件编译)、#undef(取消宏)、#error(报错终止)等,用于编译前处理,非C++语句,应谨慎使用。

C++预处理器指令是在编译器真正开始编译源代码之前,由预处理器执行的一类特殊命令。它们都以 # 开头,不带分号,也不属于C++语句,而是在翻译阶段的“预处理”环节被处理。
作用是把指定头文件的内容完整插入到当前文件的该位置,让编译器后续能识别其中的声明(比如函数原型、类定义、宏等)。
#include <iostream></iostream> —— 从标准库路径查找(系统头文件)#include "myheader.h" —— 先在当前源文件所在目录找,找不到再去系统路径(自定义头文件)#pragma once 或传统卫士宏(#ifndef XXX_H #define XXX_H ... #endif)防止头文件被重复包含。用于定义宏(macro),分为**对象宏**(类似常量)和**函数宏**(带参数的替换规则)。
#define PI 3.14159 → 所有后续出现的 PI 都被直接替换成 3.14159(无类型、无作用域、纯文本替换)#define SQUARE(x) ((x) * (x)) → 替换时展开表达式SQUARE(a + b) 可能展开成 a + b * a + b(运算优先级出错);整个表达式也建议括起来。const、constexpr 或 inline 函数替代简单宏。除了 #include 和 #define,还有几个高频指令:
立即学习“C++免费学习笔记(深入)”;
#ifdef / #ifndef / #endif:根据某个宏是否已定义,控制代码段是否参与编译(条件编译),常用于跨平台或调试开关。#ifdef DEBUG … #endif
#if / #elif / #else:支持数值表达式判断(如 #if __cplusplus >= 201703L),比 #ifdef 更灵活。#undef:取消已定义的宏,例如临时关闭某个配置:#undef MAX_SIZE。#error:强制预处理失败并报错,常用于检测不支持的环境:#error "This code requires C++20"。预处理器不是C++的一部分,它只是个“文本加工器”,不会理解语法或类型。用得好能提升灵活性,滥用则会让代码难读、难调、易出错。现代C++中,应优先考虑语言原生机制(constexpr、内联命名空间、static_assert 等),仅在必要场景(如头文件包含、条件编译)使用预处理器。
基本上就这些。
以上就是C++预处理器指令有哪些?C++ #include与#define用法详解【编译入门】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号