野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14984|回复: 2

关于if else语句出现的一个问题

[复制链接]
发表于 2020-7-8 23:56:26 | 显示全部楼层 |阅读模式

] 本帖最后由 Byr 于 2020-7-8 23:58 编辑 [/i]

[md]在学习库函数时遇到的问题,代码如下

while(1)
{
#if 0
...
#else
  if(1){
    LED_RED;
    Delay(0xFFFFFF);
  }
  else
    LED_BLUE;
  Delay(0xFFFFFF);
#endif
}//现象异常

这段代码应该是只点亮红灯的,但是在上板运行时的现象却是红灯与蓝灯交替闪烁

当我在else语句那里也加上花括号时现象就正常了

while(1)
{
#if 0
...
#else
  if(1){
    LED_RED;
    Delay(0xFFFFFF);
  }
  else{
     LED_BLUE;
  }
  Delay(0xFFFFFF);
#endif
}//现象正常

而且在写这个代码的时候出现了一个很奇怪的报错

图片.png图片.png

我查了下C语言书,也没发现是语法问题

请问这是什么原因?必须要加花括号吗?

回复

使用道具 举报

发表于 2020-7-9 16:52:44 | 显示全部楼层
报错是因为LED_RED这宏的问题,这个宏在定义的时候就已经使用了分号了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 19:26:40 | 显示全部楼层
LONG_R3acc 发表于 2020-7-9 16:52
报错是因为LED_RED这宏的问题,这个宏在定义的时候就已经使用了分号了

是的,我宏定义确实是定义成了复合语句
问题解决了,十分感谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 23:16 , Processed in 0.031167 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表