#if#else#endif
在C语言中,最常见的条件编译指令是#if #else #endif指令,该指令根据常数表达式决定某段代码是否执行。通常情况下,#if指令、#else指令和#endif指令结合在一起使用,其语法格式如下:
#if 常数表达式
程序段1
#else
程序段2
#endif
上述语法格式中,编译器只会编译程序段1或者程序段2。如果常量表达式条件成立,编译器会编译程序段1,否则编译程序段2。
接下来通过一个案例演示如何使用#if/#else/#endif指令输出程序对不同平台的支持,如例1所示。
例1 endif.c
1 #include <stdio.h>
2 //定义宏
3 #define WIN32 0
4 #define x64 1
5 #define SYSTEM WIN32
6 int main()
7 {
8 //通过判断宏SYSTEM的值,输出程序支持的平台
9 #if SYSTEM == win32
10 printf("win32\n");
11 #else
12 printf("x64\n");
13 #endif
14 return 0;
15 }
例1运行结果如图1所示。
图1 例1运行结果
在例1中,第3~4行代码定义了两个宏,分别用于表示Windows32位和64位平台;第5行代码定义了宏SYSTEM,其值为WIN32。由于定义的宏SYSTEM是32位,因此,在使用条件编译指令判断SYSTEM值时,#if条件成立,程序输出了win32。