C++ 我苦笑着向你走来~~

这是我第一个C++ 的程序编译.

#include <iostream>
using namespace std;

int main(void)
{
   int numberOfLanguages;

   cout << "Hello reader.\n"  << "Welcome to C++.\n";
   cout << "How many programming languages have you used? ";
   cin >> numberOfLanguages;

   if (numberOfLanguages < 1) 
      cout << "Read the preface. You may prefer\n" << "a more elementary book by the same author.\n";
   else
      cout << "Enjoy the book.\n";

   return 0;
}

开始编译结果弹出一个警告:



casio:~/notebook/abs_C++/01$ g++ 01-01.cpp -o 01-01

01-01.cpp:21:2: 警告: 文件未以空白行结束







这是个什么意思呢??

=================================



原因其实也很简单,因为标准规定如此。C99第5.1.1.2节这样写道:



Each instance of a backslash character () immediately

followed by a new-line character is deleted, splicing

physical source lines to form logical source lines.

Only the last backslash on any physical source line

shall be eligible for being part of such a splice. A

source file that is not empty shall end in a new-line

character, which shall not be immediately preceded by

a backslash character before any such splicing takes

place.



C99 Rationale中进一步指出:



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.



这么规定的初衷有两个:一是为了每一行都要以换行结束。二是,因为行尾的\表示连接下一行,如果一个文件最后一行行尾有\,那么,紧跟它也被包含进来的下一个源文件的第一行就会被连接!而如果一个文件以一个空行结束就会避免这种情况的发生.

好吧~~越来越有趣了~~







精进吧~~
原文链接: https://www.cnblogs.com/esta-pessoa/archive/2013/04/29/3051125.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/86467

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午10:35
下一篇 2023年2月9日 下午10:35

相关推荐