用VS编写代码时,从word文档中拷贝了一些内容作为注释。编完代码,转到linux上编译时,结果出现了下面一段有点让人丈二和尚摸不到头脑的编译错误:
具体如下图所示:
图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编码格式”,然后保存即可。
您可能也喜欢: | ||||
stm32移植ecos #34,ecos sd driver,SD卡驱动(4) |
linux共享内存应用范例 |
stm32移植ecos #37,goAhead移植到eCos,基于LWIP协议栈(下) |
曾经那么难过的伤痛都挺过来,又何况这次! |
VS助手—Visual Assist X 10.8_2043.0破解版安装 |
无觅 |