keil工具c语言MCU程序设计—#if #elif #else #endif 编译不按预期进行

keil工具c语言MCU程序设计—#if #elif #else #endif 编译不按预期进行

1.使用#if #elif #else #endif语句预编译,结果不按预期,语法无错误,代码如下:

#if (SZLBCONTROLEN==1)
    GPIO_ResetBits(GPIOB,GPIO_Pin_15);                         // 输出低
#elif (SZLBCONTROLEN==0)
     GPIO_SetBits(GPIOB,GPIO_Pin_15);                         // 输出低
#endif

软件直接编译GPIO_SetBits(GPIOB,GPIO_Pin_15);                  且无法在软件中设置断点。


========================================================

经过检查发现,SZLBCONTROLEN的定义语句与上述代码不在同一文件,且上述代码未包含SZLBCONTROLEN的定义语句的头文件,添加头文件,

重新编译,正常,问题解决。


========================================================

改进:

1.#if #elif #else #endif的使用按照以下格式规范程序设计:

#if (**==1)
    代码1
#elif (**==0)
     代码2
#endif

2.预定义语句一定记得包含头文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值