c ++是一种与空格无关的语言,是规则的例外

Fan*_*Fox 1 c++ whitespace

这个wikepedia页面将c ++定义为"与空白无关的独立语言".虽然与所有语言一样都是正确的,但规则有例外.我现在唯一能想到的就是:

vector<vector<double> >
Run Code Online (Sandbox Code Playgroud)

必须有空格,否则编译器将>>解释为流操作符.还有其他什么.编译一个例外列表会很有趣.

AnT*_*AnT 9

遵循该逻辑,您可以使用任何双字符lexeme来生成规则的此类"例外".例如,+=并且+ =将被不同地解释.我不会称他们为例外.在C++中,在许多情况下"根本没有空间"与"一个或多个空间"完全不同.当有人说C++与空间无关时,通常意味着C++中的"一个空间"通常与"多个空间"相同.

这反映在语言规范中,该规范声明(见2.1/1)在翻译的第3阶段,允许实现用一个空格字符替换多个空白字符的序列.

  • +1:甚至`inc lude`确实与`include`不同. (2认同)