如何在 // 注释中转义反斜杠

How to escape backslash in // comment

我有一条以反斜杠结尾的评论。像

...

// use \

..

Clang(++) 警告我,这是多行注释

warning: multi-line // comment [-Wcomment]
    // use \
           ^

所以我尝试在末尾添加一些空格,但没有帮助。我能以某种方式转义反斜杠吗?

您可以使用重音符号 (`)

#include<iostream>

using namespace std;

int main()
{

    // print `\`
    cout << "DONE" << endl;

    return 0;
}

虽然这不是技术解决方案,但我会以此为提示写出更好的评论:

// use \ (backslash) instead of the normal slash here, because ...

也许你有这样的代码:

#define foo {int x = 123; \
cout << x << endl; \
}

而你想把它注释掉:

//#define foo {int x = 123; \
//cout << x << endl; \
//}

以上代码应该可以正常工作。另一方面,如果你写:

#define foo {int x = 123; \
cout << x << endl; \
} \

然后 foo 可能会工作(如果下一行是空的)但是如果你把它注释掉你就会遇到麻烦。只需删除最后一个反斜杠。否则不要以反斜杠结束该行,除非它是为了连接...

问题的基础是续行的定义。

当一行以 backslash-newline 组合或 <backslash><whitespace><newline> 组合结束时,编译器会将下一行文本附加到当前文本行。这可以用宏来演示:

#define ME {\
cout << "me\n" \
}

以上将被视为单行:

#define ME {cout << "me\n"}

编译器报错,因为你的“//”注释因为“\”续行符而延伸到下一行。

解法:
将其他字符放在'\'之后。
示例:

  '\'
  \ ending character