You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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前缀:

    1. 点击工程窗口的魔法棒图标(Options for Target)
    2. 切换到C/C++选项卡
    3. 在Misc Controls输入框中添加--c11参数
      保存配置后重新编译,原代码的0b写法就能正常使用。

内容的提问来源于stack exchange,提问作者MHBagh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:47:11