翻译阶段2的第二部分(N3485中的2.2.2节)基本上说,如果源文件未以换行符结尾,则编译器应将其视为已处理。
但是,如果我正确阅读它,则会对空的源文件(将其保持为空)做出明确的异常(exception)。
确切的文本(重点在于)是:
我还无法弄清楚在任何情况下源文件是空的还是仅由换行符组成的情况。
我希望有人可以阐明该要求背后的原因。
最佳答案
我认为这样的想法是,源文件通常由零个或更多行组成,并且每行由一系列非换行字符和一个换行符组成。任何不满足该要求的源文件都需要特殊处理(因此,您不会从两个不同的源文件中获得由文本组成的行)。
空的C++源文件不是特别有用,但是禁止它是没有意义的。带引号的子句不是要区分空文件和仅包含一个换行符的文件(它们之间应该没有真正的区别)。