» 上一篇:
Windows 8中安装MSDN的方法
用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
具体如下图所示:
图1
这可以排除是语法错误引起的。因为语法错误,编译器会提示哪一行出错了。
查明真相
实际上,这个编译错误是由于文件格式引起的。我估计应该是从word拷贝内容到源文件作为注释时引起的。
使用NotePad++打开源文件,发现是UTF-8格式,如下图所示。
图2
UTF-8 编码是一种兼容 ASCII 编码的变长编码方案。
但要注意的是,大多数 Windows 文件编辑器(包括记事本)在将文件保存为 Unicode 编码时,会在文件开始的地方插入三个隐藏的字符(0xEF 0xBB 0xBF),即BOM字符(Byte Order Mark,字节顺序标记),用于标识文件是采用哪种格式的编码。
图3
Windows 使用三个隐藏的BOM字符来标记文本文件的编码方式,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但关键的问题是,linux中没有这个规矩,它不认识这三个BOM字符。
UTF-8编码文件的BOM字符:0xEF 0xBB 0xBF,对应8进制数,正好是357、273、277。也就是说,上述编译错误中的字符是以 8 进制表示的。这个编译错误,提示的确实有点隐晦。
解决方法
解决此编译错误之方法为:把UTF-8编码文件改为ASCII 编码的文件。
用NotePad++打开源文件,如图2所示,在格式菜单中,选择“转为ANSI编码格式”,然后保存即可。
» 文章出处:
reille博客—http://velep.com
, 如果没有特别声明,文章均为reille博客原创作品
» 郑重声明:
原创作品未经允许不得转载,如需转载请联系reille#qq.com(#换成@)