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

应用密码学书籍中的LFSR C代码编译报错ERROR stray \327,求排查

解决LFSR代码编译报错“ERROR stray \327”的问题

嘿,我一眼就揪出问题啦!这个编译错误的根源是你的代码里混进了编译器无法识别的非ASCII特殊字符,再加上还有个括号配对的小问题,咱们一步步来解决:

错误原因分析

报错里的stray \327是编译器在提示你:它遇到了一个不属于标准ASCII编码的乱码字符。看你代码里的0×00000001,这里的×是中文全角的乘号,但C语言里十六进制数的前缀必须是半角的小写x(或大写X),这个全角符号编译器完全认不出来,直接触发了报错。

另外原代码里还有个括号配对错误:在计算异或的部分多写了一个右括号,这也会导致后续编译失败。

修正后的完整代码

int LFSR () {
    static unsigned long ShiftRegister = 1; /* Anything but 0. */
    ShiftRegister = ((((ShiftRegister >> 31) ^ (ShiftRegister >> 6) ^ (ShiftRegister >> 4) ^ (ShiftRegister >> 2) ^ (ShiftRegister >> 1) ^ ShiftRegister) & 0x00000001) << 31) | (ShiftRegister >> 1);
    return ShiftRegister & 0x00000001;
}

关键修改点

  • 把所有的0×替换成了0x(半角小写x)
  • 移除了异或表达式末尾多余的右括号,保证括号完全配对
  • 调整了代码缩进,让结构更清晰(不影响编译,但可读性更好)

现在你再编译这个修正后的版本,应该就能正常通过啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:23:05