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.预定义语句一定记得包含头文件。