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

3

我有一个以反斜杠结尾的注释。类似于:

...

// use \

..

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

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

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


5
评论必须以反斜杠结尾的原因是什么? - molbdnilo
1
当我试图在注释中使用“:\”表情时,遇到了这个问题:\ - MichaelChirico
旧帖子,但对我来说,在反斜杠后面添加一个(空格)似乎就可以了... - JHBonarius
4个回答

6
问题的根源是对行继续符的定义。
当一行以反斜杠和换行符组合或反斜杠、空格和换行符组合结束时,编译器会将下一行文本附加到当前行文本中。这可以通过宏来演示:
#define ME {\
cout << "me\n" \
}

上述内容将被视为单行:
#define ME {cout << "me\n"}

编译器提示您的“//”注释跨越了下一行,因为有'\'续行符号。 解决方案:
在'\'后面加上其他字符。
示例:
  '\'
  \ ending character

5
虽然这不是一个技术性的解决方案,但我认为这是提示你写出更好的评论的暗示。
// use \ (backslash) instead of the normal slash here, because ...

1
您可以使用重音符号(`)。
#include<iostream>

using namespace std;

int main()
{

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

    return 0;
}

一个普通的引号或双引号都可以使用。反斜杠后面的任何内容,除了空格和换行符,都应该起作用。 - Thomas Matthews

0

也许你有这样的代码:

#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可能有效,但是如果您将其注释掉,则会遇到麻烦。只需删除最后一个反斜杠即可。否则,除非它的目的是连接,否则不要以反斜杠结尾...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接