| #instruction | function | 备注 |
|---|---|---|
| #define | 定义宏,可以是常量/字符/函数 | 通过\换行,换行时不能有空行 |
| ## | 和#define配合使用,连接两个字符串 | |
| #include | “包含”一个源代码/头文件 | #include之后的文件内容会被直接替换到这条指令处并展开,不管是头文件还是源文件 |
| #undef | 取消已定义的宏 | |
| #ifdef | 如果宏已经定义,则返回真 | 常用于条件编译,兼容不同平台 |
| #ifndef | 如果宏没有定义,则返回真 | 常用于条件编译 |
| #if | 如果给定条件为真,则下面的内容生效 | 常用于条件编译 |
| #elif | #if 给定条件不为真,当前为真,则下面的内容生效 | 常用于条件编译 |
| #else | #if 的替代方案,下面的内容生效 | 常用于条件编译 |
| #endif | 结束一个 #if……#else 条件块 | 常用于条件编译 |
| #error | 当预处理条件不满足,抛出编译错误 | |
| #warning | 输出警告信息 | 一般用于legacy support warning等 |
| #message | 输出消息 | 提醒程序员进行检查 |
| #pragma | 这个字符串会被保留,由编译器处理特殊指令 | 支持的功能和特性取决于编译器 |