美文网首页
奇葩编译问题

奇葩编译问题

作者: 叶迎宪 | 来源:发表于2021-04-08 22:40 被阅读0次

一个头文件,是从某个开源项目
https://gitee.com/Gaaagaa/inifile/blob/master/xini_file.h
网页复制黏贴到vc中保存的。但是编译始终始终报错

d:\program files (x86)\microsoft visual studio 14.0\vc\include\sal.h(2361): error C2144: 语法错误:“int”的前面应有“;”

而编译报错的一行是

extern "C" {

显得有些莫名其妙。但是使用git下载下来的文件,是可以正常编译的。尝试使用UltraEdit的十六进制查看功能比较两个文件的差异,居然没有发现有任何不同。但是使用tortoisegit自带的diff比较,比较出文件第一行有差异。右键查看文件的大小,确实两者相差了3个字节。UltraEdit的十六进制编辑功能已经不可相信了,只能自己用c程序读取文件二进制内容,发现编译出错的文件,头6个字节为 ef bb bf ef bb bf,显然UTF8的BOM头被写了两次。把文件改为utf-8无bom,保存一次减少一组bom后,就可以正常编译了。

结论
一、VS2015的编辑器有bug,一定条件下会写了两次BOM头。因此最好使用无BOM的UTF-8格式
二、UltraEdit在遇到文件有两个BOM的时候,也有bug,十六进制编辑居然漏了一组BOM

相关文章

  • 奇葩编译问题

    一个头文件,是从某个开源项目https://gitee.com/Gaaagaa/inifile/blob/mast...

  • Swift Convert3.0 编译总是失败

    最近把项目升级到Swift3.0碰到一个奇葩的问题,死活编译不通过。简直抓狂,先来一个Xcode编译截图。 这是什...

  • 由于枚举类型导致的1 duplicate symbol for

    错误如下: 这个问题比较奇葩的地方在于,用真机是可以编译成功执行的,但是用模拟器就不能编译通过。google 了半...

  • Swift调用OC创建的类Release报错问题

    写项目遇到过一次奇葩的问题,swift调用OC创建的类debug状态下没有问题,release时编译报错。 最后的...

  • 奇葩问题

    有一次,唐僧、孙悟空、猪八戒、沙僧开飞机去旅游。 飞机在半路上发生了故障,可飞机上只有3个降落伞。 于是,唐僧说:...

  • 奇葩问题

    也许是“横看成岭侧成峰,远近高低各不同”吧。昨天在“今日头条”上看到这样一个问题一一 “剩女说,宁愿不嫁渣男,一个...

  • 编译问题

    -Werror,-Wnon-modular-include-in-framework-module原因 修改bui...

  • 编译问题

    问题:configure error: Could not link against boost_system./...

  • AS 编译问题

    Android SDK Build Tools 26.0.2 will be used 检查 app/build....

  • 编译问题

    1.idea直接运行时 都是配置好的encoding编码所以控制台不乱码 2.idea里用maven编译时默认用的...

网友评论

      本文标题:奇葩编译问题

      本文链接:https://www.haomeiwen.com/subject/bnlbkltx.html