就像标题一样,我如何在gcc/g ++上使用-Wall选项并关闭多行注释警告?如何在gcc/g ++上使用-Wall选项并关闭多行注释警告?
的评论看起来像:
// Comment starts here \
// and end here (the // at the begging is not necessary)
就像标题一样,我如何在gcc/g ++上使用-Wall选项并关闭多行注释警告?如何在gcc/g ++上使用-Wall选项并关闭多行注释警告?
的评论看起来像:
// Comment starts here \
// and end here (the // at the begging is not necessary)
你可以使用/ *。* /为多行注释。
/* foo bar comment
lala blah
*/
编辑:
我发现这里另一篇文章的解决方案:How can I hide "defined but not used" warnings in GCC?
如果添加选项-Wno-评论警告消失。
gcc -Wall -Wno-comment test.c -o test
它也解释了这里:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
最良好的祝愿, 马蒂亚斯
反斜杠延续诱导警告;如果您使用注释开始启动下一行,则不需要。
删除反斜杠的延续,并用//
替换反斜杠(正如所写的,它根本不是注释),并且应该平息警告。
你也可以这样写:
/\
\
* A regular C89 comment with trigraphs for good measure.
*??/
??/
/
,谁提出的代码给我的检讨会被送回立即修复它(但可惜的编译器作家穷谁必须处理这样的废话正确!) 。
至于如何解决这个问题,如果(如评论中提到的那样)它很流行,那么你可以看到你的GCC版本是否支持-Wno-comment
来压制关于多行注释的警告。这可能是最简单的。如果做不到这一点,你必须决定是否可以使用启发式分析器来解决这个问题的风险:
sed -e 's%\(//.*\)\\$%\1%' -i.bak *.c
(假设GNU sed
为-i.bak
选项)。这会从任何此类评论中删除尾随的反斜杠。在那里我可以看到这造成麻烦的主要地点是在宏定义,如:
#define MACRO(c,d) { (c) = (d) + 1; } // Comment here \
more comment here
这是一个空洞的宏,但因为在注释的第二行,启发式替代中没有注释开始sed
脚本会给你一个语法无效的程序(除非你碰巧有这样的宏,这样'更多评论'扩展到有效的代码,这是不太可能的)。
如果启发式机制不起作用,那么也许你需要一个完整的C评论剥离器。如果在互联网上找不到某个人,我有这样一个程序(其测试文件包含如上所示可怕程序的注释) - 请参阅我的个人档案。
海湾合作委员会警告记录在这里:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
具体而言,您正在寻找:
-Wcomment
每当警告注释开始序列
/*' appears in a
/*”的评论,或者每当Backslash-Newline出现在'//'注释中时。此警告由-Wall启用。
所以把这一警告了,你应该能够使用-Wno-comment
。
你的意思是'//'而不是'\\'? –
是的,我认为程序员的想法是创建某种带有'// code \\'的盒子,但是'/'和'\'的数量在代码中并不统一......可怕的想法 – RSFalcon7