【STM32学习过程】#if、#elif、#else 和 #endif 指令详解

#if  constant-expression
 
#ifdef  identifier
 
#ifndef  identifier
 
elif-parts :
elif-line text
 
elif-parts elif-line text
 
elif-line :
#elif  constant-expression
 
else-part :
else-line text
 
else-line :
#else
 
endif-line :
#endif
  1. 源文件中的每个 #if 指令必须与表示结束的 #endif 指令匹配。任意数量的 #elif 指令可以出现在 #if 和 #endif 指令之间,但最多允许一个 #else 指令。 #else 指令(如果有)必须是 #endif 之前的最后一个指令。
  2. #if、#elif、#else 和 #endif 指令可以嵌套在其他 #if 指令的文本部分中。 每个嵌套的 #else、#elif 或 #endif 指令属于最靠近的前面的 #if 指令。
    #if DLEVEL > 5  
        #define SIGNAL  1  
        #if STACKUSE == 1  
            #define STACK   200  
        #else  
            #define STACK   100  
        #endif  
    #else  
        #define SIGNAL  0  
        #if STACKUSE == 1  
            #define STACK   100  
        #else  
            #define STACK   50  
        #endif  
    #endif  
    #if DLEVEL == 0  
        #define STACK 0  
    #elif DLEVEL == 1  
        #define STACK 100  
    #elif DLEVEL > 5  
        display( debugptr );  
    #else  
        #define STACK 200  
    #endif  

    第一个 #if 块显示两组嵌套的 #if、#else 和 #endif 指令。 仅当 DLEVEL > 5 为 true 时,才会处理第一组指令。 否则,处理 #else 后面的语句。

    第二个示例中的 #elif 和 #else 指令用于根据 DLEVEL 的值做出四种选择之一。 将常量 STACK 设置为 0、100 或 200,具体取决于 DLEVEL 的定义。 如果 DLEVEL 大于 5,则编译
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值