C语言条件编译#if_#elif_#ifdef_#ifndef

        假如要开发一款产品,开始的程序一般会利用前面已开发完毕的程序,但是程序的时钟可能不是我们需要的,时钟的变化会导致串口波特率的产生偏差,这时候我们可以利用宏来选择

/************系统时钟频率定义,主要用于配置UART波特率**********/
#if (SYSCLK_SRC == IRCH)
	#define FOSC		(3686400)
#elif (SYSCLK_SRC == PLL)
	#define PLL_Multiple			6			//PLL倍频倍数
	#define FOSC		(3686400*PLL_Multiple)
#else
	#define FOSC		(3686400)
#endif

        #if、#elif、#else 和 #endif #ifndef都是预处理命令,整段代码的意思是:如果宏 SYSCLK_SRC 与IRCH相同,就保留第3 行代码,删除第 5、6、8 行代码;如果宏 SYSCLK_SRC 与 PLL相同,就保留第 5 、6 行代码;如果所有的宏都为假,就保留第 8 行代码。
        这些操作都是在预处理阶段完成的,多余的代码以及所有的宏都不会参与编译,不仅保证了代码的正确性,还减小了编译后文件的体积。
        这种能够根据不同情况编译不同代码、产生不同目标文件的机制,称为条件编译。条件编译是预处理程序的功能,不是编译器的功能。

#if 的用法

        #if/后面接的是表达式, 这个表达式的结果必须为一个数值(任意数值皆可,但不能为空)

#if 的一般格式:

#if 整型常量表达式1
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值