概述
在编译一个程序时,可以条件编译来实现代码在某种条件下编译或忽略,这样会程序的维护性修改。
使用条件编译,可以选择代码的一部分是被正常编译还是完全忽略。支持条件编译的语句是 #if 指令和与其匹配的 #endif 指令。语法形式如下:
#if constant-expression
statements
#endif
预编译器会对constant-expression(常量表达式)进行求值,如果它为 1(真),那么statements就会被正常编译,否则statements不会被编译。
所谓constant-expression(常量表达式)就是它的值,或者由 #define 定义的符号。如果变量在执行期之前无法获得他们的值,那么该变量出现在常量表达式中就是非法的,因为它们的值是无法预测的。
#define DEBUG 1
#if DEBUG
printf("x=%d,y=%dn", x, y);
#endif
int main()
{
int x = 0, y = 1;
getchar();
return 0;
}
编译时会报错,将代码改为
#define DEBUG 1
int main()
{
int x = 0, y = 1;
#if DEBUG
printf("x=%d,y=%dn", x, y);
#endif
getchar();
return 0;
}
编译成功,运行结果
x=0,y=1
条件编译的另外一个用途就是在编译时选择不同的代码部分。为此 #if 指令还具有可选的 #else 和 #elif 子句。语法形式如下:
#if constant-expression
statements_1
#elif constant-expression
statements_2
#else
statements_3
#endif
#elif 子句出现的次数可以不限。每一个constant-expression(常量表达式)只有当前面所有的常量表达式的值都为假时才会被编译。#else 子句中的语句只有当前面所有的常量表达式的值都为假时才会被编译,其他情况都会被忽略。
最后
以上就是心灵美跳跳糖为你收集整理的C语言—预处理器2:条件编译(#if、#else、#elif和#endif)的全部内容,希望文章能够帮你解决C语言—预处理器2:条件编译(#if、#else、#elif和#endif)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复