a)反斜杠字符的存在如何使其成为“多行注释”,以及
反斜杠作为一行的最后一个字符意味着编译器应该忽略反斜杠和换行符 - 它告诉编译器在检查注释之前执行此操作。所以它说在删除评论之前它应该有效地查看
//**********|ANSWER|************\//blah blah blah, answering the
//questions, etc etc
它现在//
在开头看到并忽略该行的其余部分
b)为什么多行注释无论如何都会成为问题?
在您的示例中,这并不是因为第二行无论如何都是注释,但是如果您在第二行写了一些有用的东西怎么办?
好吧,既然你问了问题“a”,很可能你没有意识到编译器的行为是这样的,如果你没有意识到你已经注释掉了一行代码,那么编译器发出警告就很好了你。
另一个原因是,即使知道这一点,通常编辑器也不会明显地显示空格,因此很容易错过反斜杠可能是也可能不是该行的最后一个字符。例如:
int i = 42;
// backslash+space: \
i++
// backslash and no space: \
i--
printf("%d\n", i);
会导致,43
因为i--
注释掉了,但i++
不是(因为反斜杠不是该行的最后一个字符,而是一个空格)。