当我在任何声明中评论时:
std::cout/*inside cout statement*/<<"Howdy"<<endl; //Code 1
Run Code Online (Sandbox Code Playgroud)
要么
std::cout/*inside cout
statement*/<<"Howdy"<<endl; //Code 2
Run Code Online (Sandbox Code Playgroud)
它工作得很好(尤其是代码2的工作令人惊讶,其中整个事情被分成两行 - 当一些令牌在内部被破坏时,唯一的问题就出现了:
c/*the hell*/out<<"Howdy"<<endl; //cout is broken
Run Code Online (Sandbox Code Playgroud)
编译器究竟如何处理这个?
甲/* ... */评论被移除,并用在处理的下一阶段的单个空间取代.
所以前两个例子相当于:
cout << "Howdy" << endl;
Run Code Online (Sandbox Code Playgroud)
但最后一个例子被视为你写的:
c out << "Howdy" << endl;
Run Code Online (Sandbox Code Playgroud)
由于里面的空间,这显然是无效的c out.