[应用相关] printf在keil5的AC6编译器下运行进入死循环,怎么回事?

[复制链接]
2313|13
 楼主| 七毛钱 发表于 2021-5-17 15:05 | 显示全部楼层 |阅读模式

使用STM32F769I-DISCO板运行LwIP_HTTP_Server_Socket_RTOS的示例,在程序中使用宏LCD_UsrLog ("  State: Ethernet Initialization ...\n");把信息显示在屏幕上,用AC5编译时运行正常,但是编译速度太慢;而用AC6编译时,速度快,但运行出现死循环(更改库编译都能通过),这个宏定义是:
#define  LCD_UsrLog(...)    do { \
                                           LCD_LineColor = LCD_LOG_TEXT_COLOR;\
                                                  printf(__VA_ARGS__);\
                                              } while (0)

向大侠们请教怎么解决?
Undshing 发表于 2022-12-17 17:24 | 显示全部楼层
这个while(0)有什么用啊?
AloneKaven 发表于 2022-12-18 18:48 | 显示全部楼层
这个do while的条件是不是永远不成立啊
偷吻月亮 发表于 2022-12-25 06:52 | 显示全部楼层
正常来说,你用AC5AC6是不兼容的,所以可能会导致这个问题发生

占得人间第一春 发表于 2022-12-25 07:24 | 显示全部楼层
你可以用AC5编译,但是不要选择Use Cross-Module Optimization

岁月反驳 发表于 2022-12-25 07:56 | 显示全部楼层
解决不了,一般都是编译的时候,喝杯茶

討厭和人归類 发表于 2022-12-25 08:28 | 显示全部楼层
你这为啥能进到死循环里呢,是把printf去掉试试?

极客晨星 发表于 2022-12-25 09:00 | 显示全部楼层
怎么会进到LCD的用户LOG之中呢?

晚晚皆安 发表于 2022-12-25 09:32 | 显示全部楼层
你把这段代码屏蔽试试,看看能不能正常运行

一枝香 发表于 2022-12-25 10:04 | 显示全部楼层
速度慢可以提升电脑的配置的,加个固态啥的就应该好了吧

銀河 发表于 2022-12-25 10:36 | 显示全部楼层
我还没用过AC6呢,话说AC5怎么转换到AC6上啊

笨蛋无需搭理 发表于 2022-12-25 11:08 | 显示全部楼层
为啥编译速度慢,我感觉我的程序编译速度挺快的,是不是你电脑配置不够了

风吻过你的不羁 发表于 2022-12-25 11:40 | 显示全部楼层
按理来说,也不能在这里出现死循环啊,都while0)这是啥操作

SantaBunny 发表于 2023-2-19 22:21 | 显示全部楼层
不应该啊,你加个固态试试看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

400

主题

2801

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部