首页 资讯 应用 高压 设计 行业 低压 电路图 关于

嵌入式

旗下栏目: PLC 嵌入式 单片机 DCS

编译错误:error: stray ‘\357’ in program

嵌入式 | 发布时间:2018-09-18 | 人气: | #评论# | 本文关键字:C语言,C++
摘要:用VS编写代码时,从word文档中拷贝了一些内容作为注释。编完代码,转到linux上编译时,结果出现了下面一段有点让人丈二和尚摸不到头脑的编译错误: xxUnit.cpp:1: error: stray ‘\357’ in program

用VS编写代码时,从word文档中拷贝了一些内容作为注释。编完代码,转到linux上编译时,结果出现了下面一段有点让人丈二和尚摸不到头脑的编译错误:

  • xxUnit.cpp:1: error: stray ‘\357’ in program

  • xxUnit.cpp:1: error: stray ‘\273’ in program

  • xxUnit.cpp:1: error: stray ‘\277’ in program

具体如下图所示:

Cache_20c6195f8a3b0493.

图1

这可以排除是语法错误引起的。因为语法错误,编译器会提示哪一行出错了。

查明真相

实际上,这个编译错误是由于文件格式引起的。我估计应该是从word拷贝内容到源文件作为注释时引起的。

使用NotePad++打开源文件,发现是UTF-8格式,如下图所示。

Cache_-581d355135b23fcd.

图2

UTF-8 编码是一种兼容 ASCII 编码的变长编码方案。

但要注意的是,大多数 Windows 文件编辑器(包括记事本)在将文件保存为 Unicode 编码时,会在文件开始的地方插入三个隐藏的字符(0xEF 0xBB 0xBF),即BOM字符(Byte Order Mark,字节顺序标记),用于标识文件是采用哪种格式的编码。

Cache_3bd3d1610c4a53d2.

图3

Windows 使用三个隐藏的BOM字符来标记文本文件的编码方式,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但关键的问题是,linux中没有这个规矩,它不认识这三个BOM字符。

UTF-8编码文件的BOM字符:0xEF 0xBB 0xBF,对应8进制数,正好是357、273、277。也就是说,上述编译错误中的字符是以 8 进制表示的。这个编译错误,提示的确实有点隐晦。

解决方法

解决此编译错误之方法为:把UTF-8编码文件改为ASCII 编码的文件。

用NotePad++打开源文件,如图2所示,在格式菜单中,选择“转为ANSI编码格式”,然后保存即可。

责任编辑:error: stray ‘\357’

热门文章

首页 | 电气资讯 | 应用技术 | 高压电器 | 电气设计 | 行业应用 | 低压电器 | 电路图 | 关于我们 | 版权声明

Copyright 2017-2018 电气自动化网 版权所有 辽ICP备17010593号-1

电脑版 | 移动版 原创声明:本站大部分内容为原创,转载请注明电气自动化网转载;部分内容来源网络,如侵犯您的权益请发送邮件到[email protected]联系我们删除。