LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 912|回复: 8

ultraedit 编辑的c源文件不能编译

[复制链接]
发表于 2005-3-5 15:30:23 | 显示全部楼层 |阅读模式
如题,警告提示: no newline at end of file
用记事本就可以,(两者都是以空行结束)
ps 编译器为gcc , 关闭警告是可以通过编译的
发表于 2005-3-5 19:19:50 | 显示全部楼层
C 的定义要求每个源文件最后要以换行符 '\n' 结尾。
回复 支持 反对

使用道具 举报

发表于 2005-3-6 12:53:33 | 显示全部楼层
set fileformat=unix
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-8 18:07:46 | 显示全部楼层
Post by newroot
set fileformat=unix

已经设置过了,还是不行啊
回复 支持 反对

使用道具 举报

发表于 2005-3-8 21:33:29 | 显示全部楼层
如果在文件的末尾没有换行符 '\n',一个文件甚至不是一个合法的 C 程序文件。一般的编译器,像 gcc,会给出警告,但事实上如果严格按照 C 的语法定义是不应该编译通过的。
回复 支持 反对

使用道具 举报

发表于 2005-3-10 18:23:44 | 显示全部楼层
用vim -b 模式打开,是不是有非打印字符
回复 支持 反对

使用道具 举报

发表于 2005-3-11 15:01:33 | 显示全部楼层
我试了一下,你在ultraedit里结束的那一个空行多半是有一个tab的间隔,
你把这个间隔删掉就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-11 16:03:47 | 显示全部楼层
今天试了一下,好了,真是搞不懂,linux  下的问题可以刨根问底,肯定可以搞明白,但是windows 下,总是莫名其妙,
回复 支持 反对

使用道具 举报

发表于 2005-3-14 01:16:11 | 显示全部楼层
我也遇到过相同问题,最后加个回车就行了
应该是UE最后没有加CRLF吧
事实上,UE编辑的文件用vim打开,会看到每行最后都有乱码,那应该是LF,唯独最后一行没有
记事本我猜最后加了CR,没加LF,所以windows里看起来没有换行,linux里就看做是换行
回复 支持 反对

使用道具 举报

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

本版积分规则

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