当我在任何语句中评论时:
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
编译器究竟如何处理这个问题?
答案 0 :(得分:7)
删除/* ... */
注释,并在下一个处理阶段替换为单个空格。
所以前两个例子相当于:
cout << "Howdy" << endl;
但最后一个例子被视为你写的:
c out << "Howdy" << endl;
由于c out
内的空格,显然无效。
答案 1 :(得分:0)
因为在预处理器阶段,删除了注释并替换为下一个字符。然后编译器阶段检查代码的语法。