<output id="hxt7n"><dfn id="hxt7n"><form id="hxt7n"></form></dfn></output>

<track id="hxt7n"><progress id="hxt7n"><th id="hxt7n"></th></progress></track>
<address id="hxt7n"><big id="hxt7n"></big></address>

      <sub id="hxt7n"></sub>

      搜索
      打印

      [8/16位单片机] 汇编器的warning问题

      [复制链接]
      241|4
      跳转到指定楼层
      楼主
      本帖最后由 lwang8797 于 2020-2-22 11:52 编辑

      【环境】:MPLAB IDE,XC16,PICKIT3【CPU】:dspic30f4011【问题】:
      每当修改了一些inc文件或.s文件,编译时就会出现这种warning,有的文件修改了又不会出现。不知为什么,请有经验的大拿们解答,感谢!!
      ./UART.inc: Assembler messages:
      ./UART.inc:0: Warning: end of file in comment; newline inserted
      Display.s: Assembler messages:
      Display.s:0: Warning: end of file not at end of a line; newline inserted
      ./Display.inc:0: Warning: end of file not at end of a line; newline inserted





      使用特权

      评论回复
      沙发
      | 2020-2-22 21:05 | 只看该作者
      Warning: end of file not at end of a line; newline inserted
      这个容易,在代码最后添加一个空行就行了

      使用特权

      评论回复
      板凳
      | 2020-2-22 21:07 | 只看该作者
      (1)Warning: end of file in comment; newline inserted (2)Warning: end of file not at end of a line; newline inserted (3)warning: no newline at end of file

      解决:

      Step 1: place the cursor at the very end of your program file.

      Step 2: press Enter (or the Return key) to create a new blank line at the end of your file. Step 3: press the Home key to move the cursor to the very beginning of the last line.

      Step 4: press and hold the Delete key, to delete the whitespace characters that are usually auto-inserted by the Nios II IDE editor whenever you create a blank line. 即每个文件的最后一行一定要是空行,不包含空格和任何字符。虽然这种警告不会影响编译和运行,但我们最好遵循编程规范,努力消除所有的警告。

      使用特权

      评论回复
      地板
       楼主 | 2020-2-23 10:43 | 只看该作者
      玛尼玛尼哄 发表于 2020-2-22 21:07
      (1)Warning: end of file in comment; newline inserted (2)Warning: end of file not at end of a lin ...

      试了一下warning没有了,非常感谢!

      使用特权

      评论回复
      5
       楼主 | 2020-2-23 12:15 | 只看该作者
      好奇这个规定,查了一下好像是GCC的一个特殊规定,且是有历史原因的。
      【转自】https://www.zhihu.com/question/20018991
      为什么 C 语言源程序最后一行要是一个空行?
      否则的话编译器会报warning: #1-D: last line of file ends without a newline这种错误,虽然这个warning没啥影响,但既然要设计这么一个warning总得有点原因吧。

      作者:pansz
      链接:https://www.zhihu.com/question/20018991/answer/15239139
      来源:知乎
      著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

      使用特权

      评论回复
      扫描二维码,随时随地手机跟帖
      您需要登录后才可以回帖 登录 | 注册

      本版积分规则

      我要发帖 投诉建议 创建版块 申请版主

      快速回复

      您需要登录后才可以回帖
      登录 | 注册
      高级模式

      论坛热帖

      在线客服 快速回复 返回顶部 返回列表