0

我正在使用 keil uvision 4.7 版使用 TM4C123GH6PM 微控制器进行项目。当我以二进制格式为变量赋值时,如下所示:

unsigned char tmp = 0b11000011;

然后我构建项目,出现以下错误:

期望一个“;”

当我将格式更改为十六进制 - 使用 0X- 或十进制时,错误消失了。

Keil uVision 中的编译器不支持二进制格式吗?

4

3 回答 3

1

ANSI C 没有为二进制文字指定语法。Keil 编译器遵循 ANSI C 标准,其手册通常会记录任何偏差或扩展。

可以在此处找到有关此问题的先前讨论为什么 C 没有二进制文字?

于 2021-02-19T16:59:45.007 回答
1

Keil Arm v5 (ARMCC) 编译器不支持二进制文字。但是 Keil Arm V6 (ARMCLANG) 编译器确实支持二进制文字。Arm v6 编译器选项可用于 Keil MDK v5.12 及更高版本。您可能需要移植一些代码来切换编译器版本(迁移指南)。

于 2021-02-19T22:22:45.797 回答
0

打开“目标选项”-> 切换到“C/C++”选项卡-> 添加--gnu“其他控件”文本框。

像这样的代码int a = 0b101010;编译没有错误。

我正在使用 MDK 5.18 和 ARMCC V5.06 update1 (build 61)

于 2021-04-21T02:49:02.707 回答