首页 / 知识
关于C++:”文件末尾无新行”编译器警告“No newline at end of file”
2023-04-15 22:18:00

“No newline at end of file” compiler warning在某些C++编译器中,下面的警告是什么原因?
为什么在源文件/头文件的末尾应该有一个空行? 想想如果没有换行符可能会出现的一些问题。根据ANSI标准,文件开头的 只是想把任何有兴趣的人指给詹姆斯下面的答案。虽然上面的答案对于C仍然是正确的,但是新的C++标准(C++ 11)已经被改变,所以如果使用C++和符合C++ 11的编译器,则不再发出这个警告。 从C++ 11标准通过杰姆斯的帖子:
在C++ 11中删除了每个源文件以非越出换行符结束的要求。现在规范如下:
一致编译器不应该发出这个警告(至少在编译C++ 11模式时,如果编译器有不同的语言规范修订模式)。 C++ 03标准[2.1.21.]声明:
对"顺从"的回答是"因为C++ 03标准说,在新行中没有结束的程序的行为是未定义的"(释义)。 好奇者的答案是:http://gcc.gnu.org/ml/gcc/2001-07/msg01120.html。 它不是指空行,而是指最后一行(可以包含内容)是否以换行符结束。 大多数文本编辑器都会在文件的最后一行末尾放一个换行符,因此如果最后一行没有换行符,文件就有被截断的风险。但是,您可能不希望使用换行符有充分的理由,因此它只是一个警告,而不是一个错误。 因为如果文件没有以新的行结束,则C/C++版本之间的行为会不同。尤其是讨厌的C++版本,C++中的FX 03标准(翻译阶段):
未定义的行为是不好的:一个标准一致的编译器可以或多或少地做它想做的事情(插入恶意代码或其他东西),这显然是一个警告的原因。 虽然在C++ 11中情况更好,但避免在早期版本中未定义行为的情况是一个好主意。C++ 03规范比C99更坏,它直接禁止这样的文件(行为然后被定义)。
不是特定的C/C++,而是C方言:当使用EDCOX1×10扩展时,OSX上的GLSL编译器警告您没有丢失的换行符。所以你可以用一个以 我使用的是无C-IDE版本5,在我的程序中,无论是c++还是c语言,我都遇到了同样的问题。只要在程序的最后一行,即程序的最后一行(在函数的括号之后,它可以是主函数或任何函数),按Enter行号将增加1。然后执行相同的程序,它将无差错地运行。 此警告还可能有助于指示某个文件可能以某种方式被截断。的确,编译器可能无论如何都会抛出一个编译器错误——特别是如果它在一个函数的中间——或者可能是一个链接器错误,但是这些错误可能更加神秘,而且不一定会发生。 当然,如果文件在换行后立即被截断,也不能保证此警告,但它仍然可能捕获其他错误可能会错过的某些情况,并对问题给出更强烈的提示。 这不是错误。这只是个警告。 在编辑器中打开文件,转到文件的最后一行,然后按Enter键在文件末尾添加空行。 不过,除此之外,您应该使用 |
最新内容
相关内容
linux复制命令文件?
linux复制命令文件?,系统,文件,命令,目录,基本知识,源文件,目标,文件夹,路径,选项,linux怎么复制命令cp命令:用于复制文件或目录。语法如下:`baslinux下文件均分命令?
linux下文件均分命令?,管理,情况,系统,工作,信息,地址,命令,目录,单位,设备,Linux文件系统操作命令1、cat:可以显示文件的内容(经常和more搭配linux查文件数量命令?
linux查文件数量命令?,系统,数据,电脑,命令,文件,信息,代码,对比,软件,第三,linux系统如何查看自己创建了多少文件夹为了实验,我打算总共创建 7改文件名linux命令?
改文件名linux命令?,名字,软件,文件,命令,位置,系统,文件名,目录,指令,方面,linux下对文件重命名是什么命令Linux重命名文件是rename。Linux中linux终端编译命令?
linux终端编译命令?,代码,工具,环境,系统,终端,文件,源程序,编译器,语言,指令,linux终端下如何进行C语言编译在Linux下面,如果要编译一个C语言linux拼接文件命令?
linux拼接文件命令?,文件,数据,命令,代码,时间,信息,系统,情况,管理,标准,Linux文件相关命令top:显示当前进程的系统资源使用情况。kill:终止指linux文件常用命令?
linux文件常用命令?,工作,地址,信息,系统,命令,目录,标准,情况,管理,常用命令,linux常用命令及用法linux系统常用操作命令如下:ls:全拼list,功能文件写入linux命令?
文件写入linux命令?,文件,命令,状态,系统,名称,时间,首次,数据,数字,内容,在linux命令行下如何将指定的几行内容写入到一个文件中?1、首先连接linux命令写满文件?
linux命令写满文件?,地址,工作,命令,系统,管理,文件,目录,标准,电脑,信息,Linux命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录的内文件夹排序linux命令?
文件夹排序linux命令?,系统,数字,信息,工作,时间,命令,管理,设备,单位,工具,基本linux命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出linux打开文件夹命令?
linux打开文件夹命令?,工作,系统,信息,命令,图片,文件,管理,发行,名字,名称,请问Linux下通过命令行怎样打开文件xdg-open:这个命令可以打开任何linux上清空文件命令?
linux上清空文件命令?,系统,命令,文件夹,名字,档案,文件,目录,方法,终端,指令,linux删除文件的方法linux删除文件夹的方法有两种:rmdir命令和rm