【问题标题】:assigning a variable using binary format - 0B causing error in ARM Keil uVision使用二进制格式分配变量 - 0B 在 ARM Keil uVision 中导致错误
【发布时间】:2021-05-22 16:34:27
【问题描述】:

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

unsigned char tmp = 0b11000011;

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

应为“;”

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

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

【问题讨论】:

  • Keil 文档是怎么说的?

标签: arm embedded cortex-m keil armcc


【解决方案1】:

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

以前对此的讨论可以在这里找到Why doesn't C have binary literals?

【讨论】:

  • 感谢您的澄清。似乎 ARMCC 编译器没有使用扩展来支持二进制格式。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    打开“Options for target”--> 切换到“C/C++”选项卡--> 在“Misc Controls”文本框中添加--gnu

    int a = 0b101010; 之类的代码编译时没有错误。

    我正在使用 MDK 5.18 和 ARMCC V5.06 update1(内部版本 61)

    【讨论】:

      猜你喜欢
      • 2018-09-03
      • 1970-01-01
      • 2020-12-19
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      相关资源
      最近更新 更多