同样的代码为什么一个编译成功一个编译失败呢
这是第七章问题7.3中的代码。2.asm是我第一次做这个题目的时候敲上去的,但是编译没通过。我找错的时候愣是发现错误。然后我就在重新做了一遍也就是3.asm那个文件,编译通过了。我又把两个文件比较了一下发现代码一模一样。开始我以为是我标点打错了,用了中文的标点。我就把3.asm的代码copy到了2.asm上。结果还是没有通过编译仍然是一样的错误信息。我对比了一下文件发现虽然两个文件代码一样,但是2.asm占了304个字节,而3.asm占了301个字节。为什么会发生这种情况呢?
这是两个文件的链接http://pan.baidu.com/s/1jGGkOT4 http://pan.baidu.com/s/1dDEZd5Z 可能文件有问题吧
本帖最后由 零度非安全 于 2015-8-18 22:25 编辑
后来我试了下,是编码问题
我查了下你这两个文件的编码格式
2.asm这个文件的编码是UTF-8编码
3.asm这个文件的编码是UTF-8无BOM编码
我把2.asm这个文件的编码改成和3.asm这个文件的编码一样,然后两个文件都可以编译了,没有警告和错误
关于这两种编码我在这里作简单说明
UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。
所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯)。
BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。
「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。
UTF-8 的网页代码不应使用 BOM,否则常常会出错。
红色部分来自知乎,若你还是不明白的话,可以自行百度查找
百度了一下原来是这么回事,难怪会多三个字节。类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。
页:
[1]