1. 摘要
C 语言中的条件编译是通过预处理指令实现的,允许编译器根据特定条件选择性地编译代码片段,常用于跨平台开发、调试开关、功能裁剪等场景。核心指令包括#if、#ifdef、#ifndef、#else、#elif和#endif。
2. 基本语法
2.1 #ifdef 与 #ifndef
作用:检查宏是否定义,常用于判断某个功能是否启用。
示例:
#define DEBUG // 定义DEBUG宏
int main() {
#ifdef DEBUG
printf("调试模式:变量x的值为%d\n", x); // 宏定义时,编译此句
#else
printf("运行模式\n"); // 宏未定义时,编译此句
#endif
return 0;
}
2.2 #if、#elif 与 #else
作用:根据表达式的值(整数常量)决定是否编译代码块,支持复杂条件判断。
示例:
#define VERSION 2
int main() {
#if VERSION == 1
printf("版本1功能\n");
#elif VERSION == 2
printf("版本2新增功能\n"); // 此句会被编译
#else
printf("未知版本\n");
#endif
return 0;
}
2.3 defined 运算符
作用:在#if中检查宏是否定义,比#ifdef更灵活(可用于复杂表达式)。
语法:defined(宏名) 或 defined 宏名(返回 1 表示已定义,0 表示未定义)。
示例:
#define OS_WIN
// #define OS_LINUX
int main() {
#if defined(OS_WIN) && !defined(OS_LINUX)
printf("Windows系统专用代码\n"); // 此句会被编译
#elif defined(OS_LINUX)
printf("Linux系统专用代码\n");
#else
printf("其他系统代码\n");
#endif
return 0;
}

被折叠的 条评论
为什么被折叠?



