码迷,mamicode.com
首页 > 其他好文 > 详细

KEIL编程时遇到的常见错误

时间:2014-11-20 12:10:46      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:keil编程时遇到的常见错误   c语言编程   arm开发   

KEIL编程时遇到的常见错误

2014   北京海淀区  张俊浩


1.warning:  #1-D: last line of file ends without a newline 

为什么 C 语言源程序最后一行要是一个空行?否则的话编译器会报warning: #1-D: last line of file ends without a newline这种错误,虽然这个warning没啥影响,但既然要设计这么一个warning总得有点原因吧。2014-11-20)

C 语言是在 Unix 中发明的,为 Unix 系统的编程语言,它对文件的处理遵循一个基本的原则:文件是流式的,可以被任意的拼接并且拼接后仍然保证完整性。

为了保证这一点,在 Unix 中 \n 符号被定义为一行的『结束符』,换句话说,如果一行的结尾没有 \n 视为这一行没有结束,换句话说这个文件不完整,也就是说这根本不是一个合法的文本文件。(题外话:同时为了保证这一点,Unix 文本通常不允许使用 BOM,因为 BOM 拼接之后将出现在字符流的中间位置,无法有效的定义其处理方法。)
在 Windows 中,微软把 \n 定义为两行之间的『分隔符』而非结束符,所以 Unix 文件结尾的 \n ,在 Windows 看起来就是一个空行,而这一个空行在 Unix 中并不存在,如果你使用 Vim 之类的文本编辑器,会根本看不到最后这个空行。
不遵守标准会带来的问题是:如果 \n 是两行之间的分隔符,那么最后一行不带 \n,结果是拼接两个文件时,后一个文件的第一行就会被拼到前一个文件的最后一行,这很可能会造成语意错误。
比较常见的例子是:前一个文件最后一行是 } 后一个文件第一行是 #include,如果 } 后面没有结束符,拼接之后就成了 }#include ,立即发生语法错误。

bubuko.com,布布扣

KEIL编程时遇到的常见错误

标签:keil编程时遇到的常见错误   c语言编程   arm开发   

原文地址:http://blog.csdn.net/yunfenglw/article/details/41308905

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!