当前位置: 技术问答>linux和unix
warning: no newline at end of file
来源: 互联网 发布时间:2016-05-24
本文导语: 我知道只要在最后面按下回车就能解决这个警告 我想知道为什么GCC编译器要求在文件的最后必须有一新行? 请各位帮帮忙!谢谢! | 晕,又百度了一下,发现更合理的解释 GCC中如果文件...
我知道只要在最后面按下回车就能解决这个警告
我想知道为什么GCC编译器要求在文件的最后必须有一新行?
请各位帮帮忙!谢谢!
我想知道为什么GCC编译器要求在文件的最后必须有一新行?
请各位帮帮忙!谢谢!
|
晕,又百度了一下,发现更合理的解释
GCC中如果文件最后不加上一行空行的话,就会冒个warning:no newline at end of file。
在《Rationale for the C99 standard》一文中,有C99的相关信息:
A backslash immediately before a newline has long been used to continue string literals, as well as preprocessing command lines. In the interest of easing machine generation of C, and of transporting code to machines with restrictive physical line lengths, the C89 Committee generalized this mechanism to permit any token to be continued by interposing a backslash/newline sequence.
c/c++代码的每一行后面有一个“结束符”,也就是newline。避免当被include的文件展开后,前一个文件的最后一行与后一个文件的第一行直接被连接成一行从而造成错误。
GCC中如果文件最后不加上一行空行的话,就会冒个warning:no newline at end of file。
在《Rationale for the C99 standard》一文中,有C99的相关信息:
A backslash immediately before a newline has long been used to continue string literals, as well as preprocessing command lines. In the interest of easing machine generation of C, and of transporting code to machines with restrictive physical line lengths, the C89 Committee generalized this mechanism to permit any token to be continued by interposing a backslash/newline sequence.
c/c++代码的每一行后面有一个“结束符”,也就是newline。避免当被include的文件展开后,前一个文件的最后一行与后一个文件的第一行直接被连接成一行从而造成错误。
|
比如严格的编译器好像都是这种,比如HP或compaq小型机上的cc。
ibm aix上的编译器则没有这个要求。
ibm aix上的编译器则没有这个要求。
|
可以防止一些错误吧,如最后一行行尾有个 之类的
|
。。没考虑过这样问题,估计是防止什么错误吧
|
遇到过类似问题。
我是在windows下编辑程序然后在linux下编译,每次头会提示这个警告,于是在windows下每次在一个文件的结尾我都会加一个空行。在linux下使用vim编辑就没有类似的警告,不加空行也可以的
我是在windows下编辑程序然后在linux下编译,每次头会提示这个警告,于是在windows下每次在一个文件的结尾我都会加一个空行。在linux下使用vim编辑就没有类似的警告,不加空行也可以的
|
楼上正解。末行多个回车就OK了
|
英文的意思就是说文末没有换行符。Unix文档的回车换行符是一个字符n,Windows的是分别的两个nr,所以你在Windows下编辑的最后一个字符是r不是n,所以编译器以为有错误。
在文件最后补一个新行即可
百度的,应该是基于这个考虑的
在文件最后补一个新行即可
百度的,应该是基于这个考虑的