【问题标题】:typedef enum with binary definitions error (IAR 8.40)带有二进制定义错误的 typedef 枚举 (IAR 8.40)
【发布时间】:2021-10-23 17:15:49
【问题描述】:

在IAR中为STM32开发固件时,遇到如下情况:

typedef enum ll{
  A = 0b00000000000000000000000000000000,
  B = 0b00000000000000000000000000000011,
} lol;

错误[Pe067]:预期为“}”PROJ\Core\Src\main.c 72(2d 行)

但是,

typedef enum ll{
  A = 0x00000000,
  B = 0x11111111,
} lol;

编译成功。 我知道所有这些代码都在另一个 IDE n 编译器中工作。 但是在我的情况下会发生什么?为什么带 0b 的数字会带来错误?也许需要为编译器设置一些配置?

【问题讨论】:

标签: c enums iar


【解决方案1】:

二进制字面量(即带有0b 前缀的整数,例如0b010101)是不是(标准)C 语言的一部分。但是,它们 C++ 的一部分(自 C++14 起),并且一些编译器(尤其是 GCC)支持它们作为 C 中的扩展。

【讨论】:

    【解决方案2】:

    IAR 不支持二进制常量,因为它们不是 C 标准的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      相关资源
      最近更新 更多