2013-01-10 114 views
3

就像标题一样,我如何在gcc/g ++上使用-Wall选项并关闭多行注释警告?如何在gcc/g ++上使用-Wall选项并关闭多行注释警告?

的评论看起来像:

// Comment starts here \ 
// and end here (the // at the begging is not necessary) 
+2

你的意思是'//'而不是'\\'? –

+0

是的,我认为程序员的想法是创建某种带有'// code \\'的盒子,但是'/'和'\'的数量在代码中并不统一......可怕的想法 – RSFalcon7

回答

6

你可以使用/ *。* /为多行注释。

/* 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

最良好的祝愿, 马蒂亚斯

+0

这不是我的代码,它有大约10 k行,并且这是主要评论 – RSFalcon7

+0

@ RSFalcon7:我的吊;;这是一个糟糕的评论风格。请注意,如果反斜杠后面有空格,反斜杠将不会(必然)被识别为续行。任何你可以修复代码的机会? –

+0

@KeithThompson我知道,我完全同意你的看法,这部分不是我的责任,即使失去了几天的时间来解决这个问题,这将是一个完全浪费时间,因为它会在合并中丢失 – RSFalcon7

0

反斜杠延续诱导警告;如果您使用注释开始启动下一行,则不需要。

删除反斜杠的延续,并用//替换反斜杠(正如所写的,它根本不是注释),并且应该平息警告。

你也可以这样写:

/\ 
\ 
* 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评论剥离器。如果在互联网上找不到某个人,我有这样一个程序(其测试文件包含如上所示可怕程序的注释) - 请参阅我的个人档案。

0

海湾合作委员会警告记录在这里:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

具体而言,您正在寻找:

-Wcomment

每当警告注释开始序列/*' appears in a/*”的评论,或者每当Backslash-Newline出现在'//'注释中时。此警告由-Wall启用。

所以把这一警告了,你应该能够使用-Wno-comment