如何解决使用二进制格式分配变量 - 0B 在 ARM Keil uVision 中导致错误
我正在使用 keil uvision 4.7 版使用 TM4C123GH6PM 微控制器进行项目。当我以二进制格式为变量赋值时,如下所示:
unsigned char tmp = 0b11000011;
然后我构建项目,出现如下错误:
应为“;”
当我将格式更改为十六进制 - 使用 0X- 或十进制时,错误消失。
Keil uVision 中的编译器不支持二进制格式吗?
解决方法
ANSI C 没有指定二进制文字的语法。 Keil 编译器遵循 ANSI C 标准,他们的手册通常会记录任何偏差或扩展。
可以在此处找到之前对此的讨论Why doesn't C have binary literals?
,Keil Arm v5 (ARMCC) 编译器不支持二进制文字。但是 Keil Arm V6 (ARMCLANG) 编译器确实支持二进制文字。 Arm v6 编译器选项可用于 Keil MDK v5.12 及更高版本。您可能需要移植一些代码以切换编译器版本 (Migration Guide)。
,打开“目标选项”--> 切换到“C/C++”选项卡--> 在“其他控件”文本框中添加 --gnu
。
像 int a = 0b101010;
这样的代码编译没有错误。
我使用的是 MDK 5.18 和 ARMCC V5.06 update1 (build 61)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。