为什么这样(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/

    10-11 23:05
    查看更多