linux下stray \357 in program的解决

本文介绍了解决因文件编码格式中包含BOM(Byte Order Mark)导致的编译错误的方法。通常在Windows环境下使用UTF-8编码的文件会带有BOM标记,而Linux下的编译器不识别BOM,这会导致编译失败。文中提供了两种解决方案:一是使用专门的软件批量去除BOM;二是手动复制文件内容到新文件中,从而避免BOM被复制。
错误输出:
 
            error:stray \357’ in program
              error:stray \273’ in program
              error:stray \277’ in program
              。。。
产生原因:
            文本文件(源代码文件cpp等也是)的编码格式各种各样,没有明确的区分。而一些浏览文本文件的软件大多是用猜测的算法来区分这些编码,这里涉及内容很多,不多说。windows下为了区分UTF-8编码格式,在以UTF-8编码的文本文件前写入三个字节的标志(0xef0xbb0xbf)来区分UTF-8编码的文本文件,也就是带BOM的UTF-8。而linux下的一些编译器不识别BOM,所以就会报错。

解决方法:
            最简单的方法是,用去批量去BOM软件,把工程目录下的所有文件去一下BOM就立刻搞定了。
            花了点时间用Qt写了一个,这里提供linux下发布文件,及Qt源代码。
            地址: iCuteBomKiller_csdn免积分下载

          另外一个麻烦一点的办法(别人教的),把文件里面的内容复制到另一个文件里,然后替换掉原来的文件就可以了。因为复制的时候是不会把BOM复制去的。但是这样有大量文件的时候很麻烦。所以我写了这个软件。

make make -C /lib/modules/3.2.0-23-generic-pae/build M=/home/loongson modules make[1]: Entering directory `/usr/src/linux-headers-3.2.0-23-generic-pae' CC [M] /home/loongson/timer_module.o /home/loongson/timer_module.c:4:1: error: stray\302’ in program /home/loongson/timer_module.c:4:1: error: stray\240’ in program /home/loongson/timer_module.c:4:1: error: stray\302’ in program /home/loongson/timer_module.c:4:1: error: stray\240’ in program /home/loongson/timer_module.c:4:17: error: stray\302’ in program /home/loongson/timer_module.c:4:17: error: stray\240’ in program /home/loongson/timer_module.c:6:1: error: stray\302’ in program /home/loongson/timer_module.c:6:1: error: stray\240’ in program /home/loongson/timer_module.c:6:1: error: stray\302’ in program /home/loongson/timer_module.c:6:1: error: stray\240’ in program /home/loongson/timer_module.c:6:1: error: stray\302’ in program /home/loongson/timer_module.c:6:1: error: stray\240’ in program /home/loongson/timer_module.c:6:1: error: stray\302’ in program /home/loongson/timer_module.c:6:1: error: stray\240’ in program /home/loongson/timer_module.c: In function ‘my_timer_callback’: /home/loongson/timer_module.c:7:1: error: stray\302’ in program /home/loongson/timer_module.c:7:1: error: stray\240’ in program /home/loongson/timer_module.c:7:1: error: stray\302’ in program /home/loongson/timer_module.c:7:1: error: stray\240’ in program /home/loongson/timer_module.c:7:1: error: stray\302’ in program /home/loongson/timer_module.c:7:1: error: stray\240’ in program /home/loongson/timer_module.c:7:1: error: stray\302’ in program /home/loongson/timer_module.c:7:1: error: stray\240’ in program /home/loongson/timer_module.c:7:1: error: stray\302’ in program /home/loongson/timer_module.c:7:1: error: stray\240’ in program /home/loongson/timer_module.c:7:27: error: expected ‘)’ before string constant /home/loongson/timer_module.c: At top level: /home/loongson/timer_module.c:10:1: error: stray\302’ in program /home/loongson/timer_module.c:10:1: error: stray\240’ in program /home/loongson/timer_module.c:10:1: error: stray\302’ in program /home/loongson/timer_module.c:10:1: error: stray\240’ in program /home/loongson/timer_module.c:10:1: error: stray\302’ in program /home/loongson/timer_module.c:10:1: error: stray\240’ in program /home/loongson/timer_module.c:10:1: error: stray\302’ in program /home/loongson/timer_module.c:10:1: error: stray\240’ in program /home/loongson/timer_module.c: In function ‘my_timer_module_init’: /home/loongson/timer_module.c:11:1: error: stray\302’ in program /home/loongson/timer_module.c:11:1: error: stray\240’ in program /home/loongson/timer_module.c:11:1: error: stray\302’ in program /home/loongson/timer_module.c:11:1: error: stray\240’ in program /home/loongson/timer_module.c:11:1: error: stray\302’ in program /home/loongson/timer_module.c:11:1: error: stray\240’ in program /home/loongson/timer_module.c:11:1: error: stray\302’ in program /home/loongson/timer_module.c:11:1: error: stray\240’ in program /home/loongson/timer_module.c:11:1: error: stray\302’ in program /home/loongson/timer_module.c:11:1: error: stray\240’ in program /home/loongson/timer_module.c:11:27: error: expected ‘)’ before string constant /home/loongson/timer_module.c:12:1: error: stray\302’ in program /home/loongson/timer_module.c:12:1: error: stray\240’ in program /home/loongson/timer_module.c:12:1: error: stray\302’ in program /home/loongson/timer_module.c:12:1: error: stray\240’ in program /home/loongson/timer_module.c:12:1: error: stray\302’ in program /home/loongson/timer_module.c:12:1: error: stray\240’ in program /home/loongson/timer_module.c:12:1: error: stray\302’ in program /home/loongson/timer_module.c:12:1: error: stray\240’ in program /home/loongson/timer_module.c:13:1: error: stray\302’ in program /home/loongson/timer_module.c:13:1: error: stray\240’ in program /home/loongson/timer_module.c:13:1: error: stray\302’ in program /home/loongson/timer_module.c:13:1: error: stray\240’ in program /home/loongson/timer_module.c:13:1: error: stray\302’ in program /home/loongson/timer_module.c:13:1: error: stray\240’ in program /home/loongson/timer_module.c:13:1: error: stray\302’ in program /home/loongson/timer_module.c:13:1: error: stray\240’ in program /home/loongson/timer_module.c:14:1: error: stray\302’ in program /home/loongson/timer_module.c:14:1: error: stray\240’ in program /home/loongson/timer_module.c:14:1: error: stray\302’ in program /home/loongson/timer_module.c:14:1: error: stray\240’ in program /home/loongson/timer_module.c:14:1: error: stray\302’ in program /home/loongson/timer_module.c:14:1: error: stray\240’ in program /home/loongson/timer_module.c:14:1: error: stray\302’ in program /home/loongson/timer_module.c:14:1: error: stray\240’ in program /home/loongson/timer_module.c:15:1: error: stray\302’ in program /home/loongson/timer_module.c:15:1: error: stray\240’ in program /home/loongson/timer_module.c:15:1: error: stray\302’ in program /home/loongson/timer_module.c:15:1: error: stray\240’ in program /home/loongson/timer_module.c:15:1: error: stray\302’ in program /home/loongson/timer_module.c:15:1: error: stray\240’ in program /home/loongson/timer_module.c:15:1: error: stray\302’ in program /home/loongson/timer_module.c:15:1: error: stray\240’ in program /home/loongson/timer_module.c:15:1: error: stray\302’ in program /home/loongson/timer_module.c:15:1: error: stray\240’ in program /home/loongson/timer_module.c:15:1: error: stray\302’ in program /home/loongson/timer_module.c:15:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:16:1: error: stray\302’ in program /home/loongson/timer_module.c:16:1: error: stray\240’ in program /home/loongson/timer_module.c:17:1: error: stray\302’ in program /home/loongson/timer_module.c:17:1: error: stray\240’ in program /home/loongson/timer_module.c:17:1: error: stray\302’ in program /home/loongson/timer_module.c:17:1: error: stray\240’ in program /home/loongson/timer_module.c:17:1: error: stray\302’ in program /home/loongson/timer_module.c:17:1: error: stray\240’ in program /home/loongson/timer_module.c:17:1: error: stray\302’ in program /home/loongson/timer_module.c:17:1: error: stray\240’ in program /home/loongson/timer_module.c:17:1: error: stray\302’ in program /home/loongson/timer_module.c:17:1: error: stray\240’ in program /home/loongson/timer_module.c:17:1: error: stray\302’ in program /home/loongson/timer_module.c:17:1: error: stray\240’ in program /home/loongson/timer_module.c:18:1: error: stray\302’ in program /home/loongson/timer_module.c:18:1: error: stray\240’ in program /home/loongson/timer_module.c:18:1: error: stray\302’ in program /home/loongson/timer_module.c:18:1: error: stray\240’ in program /home/loongson/timer_module.c:18:1: error: stray\302’ in program /home/loongson/timer_module.c:18:1: error: stray\240’ in program /home/loongson/timer_module.c:18:1: error: stray\302’ in program /home/loongson/timer_module.c:18:1: error: stray\240’ in program /home/loongson/timer_module.c:19:1: error: stray\302’ in program /home/loongson/timer_module.c:19:1: error: stray\240’ in program /home/loongson/timer_module.c:19:1: error: stray\302’ in program /home/loongson/timer_module.c:19:1: error: stray\240’ in program /home/loongson/timer_module.c:19:1: error: stray\302’ in program /home/loongson/timer_module.c:19:1: error: stray\240’ in program /home/loongson/timer_module.c:19:1: error: stray\302’ in program /home/loongson/timer_module.c:19:1: error: stray\240’ in program /home/loongson/timer_module.c:20:1: error: stray\302’ in program /home/loongson/timer_module.c:20:1: error: stray\240’ in program /home/loongson/timer_module.c:20:1: error: stray\302’ in program /home/loongson/timer_module.c:20:1: error: stray\240’ in program /home/loongson/timer_module.c:20:1: error: stray\302’ in program /home/loongson/timer_module.c:20:1: error: stray\240’ in program /home/loongson/timer_module.c:20:1: error: stray\302’ in program /home/loongson/timer_module.c:20:1: error: stray\240’ in program /home/loongson/timer_module.c:20:1: error: stray\302’ in program /home/loongson/timer_module.c:20:1: error: stray\240’ in program /home/loongson/timer_module.c: At top level: /home/loongson/timer_module.c:23:1: error: stray\302’ in program /home/loongson/timer_module.c:23:1: error: stray\240’ in program /home/loongson/timer_module.c:23:1: error: stray\302’ in program /home/loongson/timer_module.c:23:1: error: stray\240’ in program /home/loongson/timer_module.c:23:1: error: stray\302’ in program /home/loongson/timer_module.c:23:1: error: stray\240’ in program /home/loongson/timer_module.c:23:1: error: stray\302’ in program /home/loongson/timer_module.c:23:1: error: stray\240’ in program /home/loongson/timer_module.c: In function ‘my_timer_module_exit’: /home/loongson/timer_module.c:24:1: error: stray\302’ in program /home/loongson/timer_module.c:24:1: error: stray\240’ in program /home/loongson/timer_module.c:24:1: error: stray\302’ in program /home/loongson/timer_module.c:24:1: error: stray\240’ in program /home/loongson/timer_module.c:24:1: error: stray\302’ in program /home/loongson/timer_module.c:24:1: error: stray\240’ in program /home/loongson/timer_module.c:24:1: error: stray\302’ in program /home/loongson/timer_module.c:24:1: error: stray\240’ in program /home/loongson/timer_module.c:25:1: error: stray\302’ in program /home/loongson/timer_module.c:25:1: error: stray\240’ in program /home/loongson/timer_module.c:25:1: error: stray\302’ in program /home/loongson/timer_module.c:25:1: error: stray\240’ in program /home/loongson/timer_module.c:25:1: error: stray\302’ in program /home/loongson/timer_module.c:25:1: error: stray\240’ in program /home/loongson/timer_module.c:25:1: error: stray\302’ in program /home/loongson/timer_module.c:25:1: error: stray\240’ in program /home/loongson/timer_module.c:25:1: error: stray\302’ in program /home/loongson/timer_module.c:25:1: error: stray\240’ in program /home/loongson/timer_module.c:25:27: error: expected ‘)’ before string constant make[2]: *** [/home/loongson/timer_module.o] Error 1 make[1]: *** [_module_/home/loongson] Error 2 make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-23-generic-pae' make: *** [all] Error 2
最新发布
12-03
`error: stray '\350' in program` 这类错误通常出现在编译器在源代码中遇到无法识别的字符时,这些字符通常是由于从网页、文档或其他非代码格式的文本中复制代码时引入的隐藏字符或特殊编码字符。这些字符在视觉上可能不明显,但在编译过程中会导致语法错误。 ### 错误原因分析 1. **非法字符或编码问题**:这类错误往往与非 ASCII 字符有关,例如 UTF-8 编码中的某些特殊符号、全角字符或隐藏字符。这些字符在复制过程中可能被带入代码中,尤其是在从网页或 PDF 中复制代码时更为常见 [^2]。 2. **不可见字符**:有时这些字符是空白符、软连字符(soft hyphen)或字节顺序标记(BOM)的一部分,它们在编辑器中不易察觉,但会干扰编译器的解析过程 [^1]。 3. **换行符格式问题**:在某些情况下,换行符格式不一致(如 Windows 与 Linux 换行符混用)也可能导致类似错误 [^3]。 --- ### 解决方法 1. **使用十六进制编辑器检查文件** 使用 `hexdump` 或 `xxd` 工具查看文件的十六进制内容,找到非法字符的具体位置。例如: ```bash xxd your_file.c ``` 查找如 `C3 B8`(对应 `\350`)等异常编码,确认其位置并删除或替换。 2. **使用文本编辑器清理代码** 将代码粘贴到支持显示不可见字符的编辑器中(如 VS Code、Sublime Text),启用“显示不可见字符”功能,识别并删除异常字符。 3. **转换文件编码为标准 UTF-8** 使用 `iconv` 或 `recode` 工具将文件转换为干净的 UTF-8 编码: ```bash iconv -f UTF-8 -t UTF-8 -c your_file.c > cleaned_file.c ``` `-c` 参数会跳过非法字符。 4. **使用命令行工具过滤非法字符** 使用 `tr` 删除非打印字符: ```bash tr -cd '\11\12\15\40-\177' < your_file.c > cleaned_file.c ``` 这条命令会保留换行符和标准打印字符,过滤掉其他非法字节。 5. **配置版本控制系统(如 Git)的换行符处理** 如果问题与换行符有关,可以在 Git 中设置自动转换: ```bash git config --global core.autocrlf input ``` 这将确保在提交时统一换行符格式 。 6. **使用专用工具辅助处理** 如引用中提到的 `CodeToCompile` 工具,可自动清洗从网页复制的代码,去除隐藏字符和非法格式,提高代码可编译性 [^2]。 --- ### 编码建议 - **避免直接复制非代码格式内容**:尽量从代码块或 `.txt`、`.c` 等纯文本文件中复制代码。 - **使用代码高亮编辑器**:如 VS Code、Atom、Vim(启用 `set list`)等,有助于识别隐藏字符。 - **启用语法检查插件**:如 `editorconfig` 插件,可帮助统一编码风格和字符集。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值