【发布时间】: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 的数字会带来错误?也许需要为编译器设置一些配置?
【问题讨论】:
-
请注意,二进制数的
0b前缀不是 C 语言的标准部分,但某些实现支持它作为扩展。 -
这能回答你的问题吗? Why doesn't C have binary literals?
-
下一版 C 标准 (C23) 的工作草案确实有这些二进制文字。
-
这在 IAR 的 Technical Note 46979 中有所提及。