鱼C论坛

 找回密码
 立即注册
查看: 1701|回复: 5

同样的代码为什么一个编译成功一个编译失败呢

[复制链接]
发表于 2015-8-18 16:11:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是第七章问题7.3中的代码。
2.asm是我第一次做这个题目的时候敲上去的,但是编译没通过。我找错的时候愣是发现错误。然后我就在重新做了一遍也就是3.asm那个文件,编译通过了。我又把两个文件比较了一下发现代码一模一样。开始我以为是我标点打错了,用了中文的标点。我就把3.asm的代码copy到了2.asm上。结果还是没有通过编译仍然是一样的错误信息。我对比了一下文件发现虽然两个文件代码一样,但是2.asm占了304个字节,而3.asm占了301个字节。为什么会发生这种情况呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-8-18 16:12:32 | 显示全部楼层
这是两个文件的链接http://pan.baidu.com/s/1jGGkOT4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-18 17:35:14 | 显示全部楼层

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-18 19:02:27 | 显示全部楼层
可能文件有问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-18 22:09:06 | 显示全部楼层
本帖最后由 零度非安全 于 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,否则常常会出错。


红色部分来自知乎,若你还是不明白的话,可以自行百度查找
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-19 01:00:32 From FishC Mobile | 显示全部楼层
百度了一下原来是这么回事,难怪会多三个字节。类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 02:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表