奇怪问题:stray '\200' in program

本文分享了一次解决程序报错的奇特经历,问题源于从TXT文档复制的内容中包含不同格式的空格,导致程序异常。通过彻底删除这些特殊空格,问题得以顺利解决。
  • 今天遇到一个奇怪的问题;程序内部一定是对的,我有这个信心,但是一直报错,我都没见过,最后一想是txt文档直接复制过来的,里面有不同文件格式的空格,

解决方式

  • 删除里面所有的空格,问题就解决了
### ### 编译错误:程序中出现非法的中文引号(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,以防止意外插入中文字符。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值