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 ,立即发生语法错误。

时间: 2024-11-05 17:19:07

KEIL编程时遇到的常见错误的相关文章

C#编程的五个常见错误

[转自e良师益友网]尽管本文讨论的大多数错误是针对 C# 的,有些错误与其他以 CLR 为目标的语言,或者用到了 Framework Class Library (FCL) 的语言也相关.下面描述的五个常见错误: 常见错误1: 把引用当做值来用,或者反过来 C++ 和其他很多语言的程序员,习惯了给变量赋值的时候,要么赋单纯的值,要么是现有对象的引用.然而,在C# 中,是值还是引用,是由写这个对象的程序员决定的,而不是实例化对象并赋值的程序员决定的.这往往会坑到 C# 的新手程序员. 如果你不知道

Keil下载时出现program fail错误的一个原因

在使用Keil给STM32单片机编程的时候有时会出现Programing Failed!对于这样的错误网上有很多的教程,错误的原因也有很多,比如是单片机上锁,环境配置错误的原因导致.这里我将提供一种错误的可能:电源问题 我的电源在家的时候摔了一下,当时把代码下载到单片机时,发现就有了上面的错误,Keil始终不能下载程序到单片机,使用FLYMCU下载后,有这样的现象:使用USB供电可以正常执行,使用插座的那个电源程序出现问题,不能正常运行,并且电源指示灯一闪一闪的.当时就发现电源似乎有问题,但是没

R语言编程中的常见错误

R语言编程中的常见错误有一些错误是R的初学者和经验丰富的R程序员都可能常犯的.如果程序出错了,请检查以下几方面.? 使用了错误的大小写.help().Help()和HELP()是三个不同的函数(只有第一个是正确的).? 忘记使用必要的引号.install.packages("gclus")能够正常执行,然而Install.packages(gclus)将会报错.? 在函数调用时忘记使用括号.例如,要使用help()而非help.即使函数无需参数,仍需加上().? 在Windows上,路

Git在开发android系统时常用的技巧及常见错误解决方案

Git常用的技巧及常见错误解决方案 项目管理工作 repo 常用命令 ==目标== 了解repo工作原理及常用的repo命令 Git 日常使用的命令,常见问题及解决方案 ==关键词== Repo , Git ==工作指南== == <big>Repo</big> == Android代码其实是由若干个git 工作组织在一起的,repo 是一个便于整体管理这些项目的脚本. 拉代码时需要用到几个步骤,分别对几个步骤进行阐述一下,网上有很多repo 的使用方法,但是对其工作原理描述的并不

WAVSEP在Linux系统中部署时常见错误

使用Tomcat部署时常见错误 环境:Debian7 , tomcat7, WAVSEP v1.5 安装时提示: javax.servlet.ServletException: java.sql.SQLException: Database 'db/WavsepConfigDB'  not found 原因: tomat用户没有写入根目录的权限. 解决办法: 以root身份运行,在根目录建立db目录并将所有权授予tomcat用户. #mkdir /db #chown -R tomcat:tomc

PHP编译安装时常见错误解决办法,php编译常见错误

PHP编译安装时常见错误解决办法,php编译常见错误 1.configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution 解决方法: yum -y install libxslt-devel 2.configure: error: Could not find net-snmp-config binary. Please check your net-snmp installa

JAVA编程常见错误集锦(2)

32, car is not mapped 可能1: 在cfg.xml中没有增加映射的hbm.xml文件在<mapping.../>中 33, 属性没有找到 可能1: hbm.xml文件中的 <property name =""> 有问题, 也许是name的值与对应类中的成员名不一致 34,SQLException: 无当前连接 可能1:在比如创建帐户时没有对相应的方法添加到<list>中去,比如这个没有加入:<value>newAcco

【爬坑】Python 3.6 在 Socket 编程时出现类型错误 TypeError: a bytes-like object is required, not &#39;str&#39;

1. 问题描述 Python 3.6 在 Socket 编程时出现错误如下 Traceback (most recent call last): File "F:/share/IdeaProjects/test/mypython/test/test10_tcpclient.py", line 17, in <module> sock.send(str) TypeError: a bytes-like object is required, not 'str' Process

linux编译安装时常见错误解决办法

linux编译安装时常见错误解决办法 This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution复制代码 代码如下:yum -y install libxslt-devel c