为什么这样(live):
int main()
{
// my pretty comment /\
//
//
}
在c发出警告:
warning: backslash and newline separated by space [-Wbackslash-newline-escape]
?
看起来该代码是完全有效的,没有任何陷阱。
最佳答案
从C++ 14草案[4296]:
2.2翻译阶段[lex.phases]
确切地说,它的第一句话给出了警告。
在您的示例代码中:
int main()
{
// my pretty comment /\
int x;
int y = x;
}
int x;
行将被添加到上面一行的注释中,并将在下一阶段的翻译中删除。所以你有一个错误:然而
int main()
{
// my pretty comment /\
//
}
有效,不会导致错误。您可能会注意到
g++
(不带-Wall
)在这里不会发出警告。看起来像没有用的警告,但我认为编译器可能会将其视为换行符转义的可能失败。因此,最好在这里给您警告。实际上,不,我们在这里不需要它。但这只是诊断性警告,最好是发出这样的警告以能够发现可能的问题,而不是根本没有警告。
我认为,这也是诸如此类的原因:
spaces
。为什么? :) /*
和*/
序列。 关于c++ - clang:反斜杠和换行符在单行注释中用空格分隔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31673945/