在Keil IDE中给uint16_t变量赋值二进制值时遇Error #65错误求助
在Keil中给uint16_t变量正确赋值二进制的方法
你的代码报错Error #65,是因为Keil默认使用的ARMCC编译器(尤其是旧版本)不支持C11标准引入的0b前缀二进制字面量写法,编译器无法识别0b1110110000000101这种格式,所以抛出语法错误。
下面是几种可行的解决方法:
方法一:用十六进制替代(最简便通用)
把二进制值转换为十六进制,所有C编译器都支持十六进制字面量。你的二进制1110110000000101对应十六进制是0xEC05,修改代码如下:TX_Buffer = 0xEC05;方法二:自定义宏模拟二进制赋值
可以通过宏定义来实现类似二进制字面量的效果,比如定义一个处理16位二进制的宏:#include <stdlib.h> #define BIN16(x) (uint16_t)(strtol(#x, NULL, 2))使用时直接传入二进制数字符串:
TX_Buffer = BIN16(1110110000000101);方法三:开启C11标准支持(针对新版Keil)
如果你的Keil版本较新,可以配置编译器启用C11标准,这样就能直接用0b前缀:- 点击工程窗口的魔法棒图标(
Options for Target) - 切换到
C/C++选项卡 - 在
Misc Controls输入框中添加--c11参数
保存配置后重新编译,原代码的0b写法就能正常使用。
- 点击工程窗口的魔法棒图标(
内容的提问来源于stack exchange,提问作者MHBagh
相关产品推荐
相关产品推荐

