2017-10-16 158 views
2

我得到一个警告GCC多行注释警告

警告:多行注释[-Wcomment]

由于评论,我有,看起来像

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

我明白这个错误,并看到了关于这个主题的其他SO消息。

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

我很好奇是什么,我就小心翼翼地确保该线末端用\。该行以\然后以空格结束。这是预处理器剥离我的尾部空间,从而引入警告?

+0

您可以在评论末尾添加'...',或者使用'\''而不是\仅在\中 –

+0

只需在最后添加一个字符\ – Indent

+0

@Indent修复问题很简单,但我想了解发生了什么。 –

回答

3

initial processing期间,预处理器对其输入执行一系列文本转换。

下面是从文档报价(相关部分是黑体):

续行合并为一个长行。

续行是以反斜杠结尾的行。反斜杠被删除,下一行与当前行结合。

...

上的续行的斜杠通常被称为反斜杠换行符。

如果反斜杠和行尾之间有空白,那仍然是续行。但是,由于这通常是编辑错误的结果,并且许多编译器不会接受它作为续行,所以GCC会警告您。

在这种情况下,它最好使用'\'代替\如反斜杠用作符号而不是作为连续线指示器。另一个(主观上较差)选项是在\(例如一个点)之后放置一个结束非空白字符。

+0

感谢您的链接和详细信息。对于信息clang和icc做同样的但没有来自MSVC的警告。 –