gcc多行注释警告

3

我收到了一个警告

警告:多行注释[-Wcomment]

这是由于我有一个类似的注释造成的

// strings can start with a \ and also end with a \ 

我理解这个错误,并看到其他关于此主题的SO留言。

我可以很容易地修复警告(通过双引号引用 \s)。

我想知道的是,我注意确保该行不会以 \ 结尾。该行以 \ 结尾,然后是一个空格。这是预处理器剥离我的尾随空格而引入警告吗?


你可以在注释的末尾添加...,或者使用'\'代替其中的\ - Basile Starynkevitch
只需在最后的\后面添加一个字符 - Indent
@Indent 修复问题很容易,但我想了解发生了什么。 - Paul Floyd
编译器认为以“\”结尾的行会在下一行继续。 - Indent
https://dev59.com/LWw05IYBdhLWcg3wv0R6 - Indent
1个回答

4
初始处理 过程中,预处理器对其输入执行一系列的文本转换操作。
以下是来自文档的引用(相关部分已加粗):

连续行合并成一行。

连续行指以反斜杠“\”结束的行。反斜杠会被移除,并且紧接着的行会和当前行合并。

...

连续行尾部的反斜杠通常称为反斜杠换行符。

如果反斜杠和行尾之间有空格,那么该行仍然视为连续行。然而,由于这通常是编辑错误的结果,许多编译器不会将其视为连续行,因此GCC会发出警告。

在这种情况下,最好使用 '\' 而不是 \ 作为反斜杠被用作符号而不是连续行指示符。另一种(主观上较差的)选择是在 \ 后面放一个非空格字符作为结尾(例如一个点)。

感谢提供链接和细节。对于信息,clang 和 icc 做相同的事情,但 MSVC 没有警告。 - Paul Floyd

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