带有二进制定义错误的 typedef 枚举 (IAR 8.40)
typedef enum with binary definitions error (IAR 8.40)
在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 的数字会带来错误?也许需要为编译器设置一些配置?
二进制文字(即带有 0b
前缀的整数,例如 0b010101
)不是(标准)C 语言的一部分。但是,它们是 C++ 的一部分(自 C++14 起),一些编译器(特别是 GCC)支持它们作为 C 中的扩展。
IAR 不支持二进制常量,因为它们不是 C 标准的一部分。
在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 的数字会带来错误?也许需要为编译器设置一些配置?
二进制文字(即带有 0b
前缀的整数,例如 0b010101
)不是(标准)C 语言的一部分。但是,它们是 C++ 的一部分(自 C++14 起),一些编译器(特别是 GCC)支持它们作为 C 中的扩展。
IAR 不支持二进制常量,因为它们不是 C 标准的一部分。