编译错误:stray ‘\357’ in program的解决方法

本文介绍了一种常见的编译错误——由带BOM头的UTF8编码格式导致的错误,并提供了使用Notepad++进行文件编码转换的具体解决办法。
如编译时遇到如下所示的编译错误:


./month_matcher.cpp:1: error: stray ‘\357’ in program
./month_matcher.cpp:1: error: stray ‘\273’ in program
./month_matcher.cpp:1: error: stray ‘\277’ in program


则说明文件为“带BOM头的UTF8”编码格式,相应的解决方法是将文件转换为“不带BOM头的UTF8”编码格式,Notepad++就带有这样的功能:


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
### ### 编译错误:程序中出现非法的中文引号(stray '' in program解决方案 在 C/C++ 编程环境中,若代码中使用了中文引号(如 `“”` 或 `‘’`),编译器通常会报错:“Compilation error: stray ‘’ in program”,因为这些字符不属于 ASCII 字符集,而大多数嵌入式开发环境默认仅支持 ASCII 编码[^1]。 #### 原因分析 中文引号属于 Unicode 范畴,C/C++ 的字符串和字符常量要求使用英文双引号 `"` 和单引号 `'`。当源代码文件中包含未被识别的字符时,编译器无法正确解析,从而导致语法错误或词法错误。 #### 解决方案 1. **替换所有中文引号为英文引号** 检查代码中的字符串和字符常量,确保所有使用的引号均为英文格式: ```cpp const char* password = "pass\"word"; // 正确使用英文双引号并转义 ``` 2. **启用 UTF-8 编码支持(适用于特定平台)** 在某些支持 Unicode 的编译环境下(如 ESP-IDF),可通过配置使编译器接受 UTF-8 编码的源文件。保存文件时选择 UTF-8 编码,并在项目配置中启用相关选项: ```makefile # Makefile 示例(部分平台需手动设置编码) CPPFLAGS += -finput-charset=UTF-8 -fexec-charset=UTF-8 ``` 3. **避免在敏感字段中使用非 ASCII 字符** 即使编译通过,Wi-Fi 密码、SSID 等字段仍可能因底层驱动不支持 Unicode 而连接失败。建议始终使用英文字符作为密码和 SSID 名称。 4. **使用十六进制表示法处理特殊字符** 若必须使用非 ASCII 字符,可将其转换为 UTF-8 编码的十六进制形式进行存储: ```cpp const char* ssid = "\xE4\xB8\xAD\xE6\x96\x87"; // UTF-8 编码的“中文” ``` 5. **检查编辑器设置** 使用支持 UTF-8 的文本编辑器(如 VS Code、Sublime Text),并在状态栏确认当前文件编码格式是否为 UTF-8,以防止意外插入中文字符。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值