C语言 ——— 学习并使用 #if …… #endif 条件编译指令

目录

何为条件编译指令

常见的条件编译指令

学习条件编译指令

使用条件编译指令

在程序预编译阶段,条件编译指令的代码转换

多分支的条件编译指令


何为条件编译指令

在编译一个程序的时候,如果要将一条语句(一组语句)选择编译或者放弃时,就使用条件编译指令


常见的条件编译指令

#if 常量表达式
    // ……
#endif

学习条件编译指令

#if 后面是一个常量表达式,当常量表达式为真时(非0时)就执行条件编译中的语句,为假时就不执行 


使用条件编译指令

代码演示(为真时):

#include<stdio.h>
int main()
{

#if 1
	printf("hello world\n");
#endif

	return 0;
}

1 为真,所以要执行 #if 内的代码

代码验证(为真时):

代码演示(为假时):

#include<stdio.h>
int main()
{

#if 0
	printf("hello world\n");
#endif

	return 0;
}

0 为假,就不会执行 #if 内的代码

代码验证(为假时):


在程序预编译阶段,条件编译指令的代码转换

代码演示(为真时):

#if 1
	printf("hello world\n");
#endif

#if 后面的常量表达式为真时,在程序预编译阶段就会把 #if 1 和 #endif 删除,只留下要执行的代码,以上代码就会转换为以下代码:

printf("hello world\n");

代码演示(为假时):

#if 0
	printf("hello world\n");
#endif

#if 后面的常量表达式为假时,在程序预编译阶段就会把 #if 1 和 #endif 还有它们所包含的代码全部删除,也就是会将 priintf 函数从程序中删除

结论:

if 等判断语句和 #if 条件编译指令要区分开来,if语句条件为假时只是不执行if内的语句,而 #if 为假时是直接删除 #if 中的语句


多分支的条件编译指令

代码演示:

#define M 0

int main()
{

#if (M == 1)
	printf("hello\n");
#elif (M == 2)
	printf("world\n");
#else
	printf("hello world\n");
#endif

	return 0;
}

多分支结构分析:

和 if 、else if 语句类似,#if 和 #elif 中的常量表达式都为假,所以只会执行 #else 中的表达式,并且不论是但分支还是多分支,在末尾都要加上 #endif

代码验证:

且在程序预编译阶段,也是会将不执行的代码删除,只保留执行的代码

结论:

条件编译指令多用于跨平台性的代码上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值