当我在任何语句中发表评论时,例如:
std::cout/*inside cout statement*/<<"Howdy"<<endl; //Code 1
或
std::cout/*inside cout
statement*/<<"Howdy"<<endl; //Code 2
它运行良好(尤其对代码 2 的工作感到惊讶,其中整个事情被分成两行 - 当某些令牌在内部被破坏时,就会出现唯一的问题,例如:
c/*the hell*/out<<"Howdy"<<endl; //cout is broken
编译器究竟如何处理这个问题?
在
下一处理阶段,/* ... */
注释将被删除并替换为单个空格。
所以前两个例子等效于:
cout << "Howdy" << endl;
但是最后一个例子被视为你写的:
c out << "Howdy" << endl;
这显然是无效的,因为c out
内部的空间.
因为在预处理器阶段,删除了注释并替换为下一个字符。然后编译器阶段检查代码的语法。