タイトルのように、gcc / g ++で-Wallオプションを使用して、複数行のコメント警告をオフにするにはどうすればよいですか?
コメントは次のようになります。
// Comment starts here \
// and end here (the // at the begging is not necessary)
複数行のコメントには/*..*/を使用できます。
/* foo bar comment
lala blah
*/
編集:
ここの別の投稿で解決策を見つけました:GCCで「定義されているが使用されていない」警告を非表示にするにはどうすればよいですか?
オプション-Wno-commentを追加すると、警告は消えます。
gcc -Wall -Wno-comment test.c -o test
ここでも説明されています:http: //gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
よろしくお願いします、マティアス
GCCの警告はここに文書化されています:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
具体的には、次のものを探しています。
-コメント
コメント開始シーケンス
/*' appears in a
/*'コメント、またはバックスラッシュ-改行が`//'コメントに表示されるたびに警告します。この警告は-Wallによって有効になります。
したがって、その警告をオフにするには、を使用できるはずです-Wno-comment
。
バックスラッシュの継続は警告を引き起こします。次の行をコメント開始で開始する場合は必要ありません。
バックスラッシュの続きを削除し、行の先頭にあるバックスラッシュを//
(記述されているように、コメントではありません)に置き換えて、警告を鎮める必要があります。
次のように書くこともできます。
/\
\
* A regular C89 comment with trigraphs for good measure.
*??/
??/
/
そして、レビューのためにそのコードを私に提示した人は誰でも、すぐにそれを修正するために送り返されます(しかし、そのようなナンセンスを正しく処理しなければならない貧しいプログラマーライターを残念に思います!)。
それを修正する方法に関しては、(コメントで言及されているように)それが普及している場合、GCCのバージョンが-Wno-comment
複数行のコメントに関する警告を抑制することをサポートするかどうかを確認できます。それはおそらく最も簡単です。それができない場合は、ヒューリスティックパーサーを使用して問題を修正するリスクを冒すことができるかどうかを判断する必要があります。
sed -e 's%\(//.*\)\\$%\1%' -i.bak *.c
(オプションにGNUsed
を想定)。-i.bak
これにより、そのようなコメントから末尾の円記号が削除されます。これが問題を引き起こしているのを私が見ることができた主な場所は、次のようなマクロ定義にあります。
#define MACRO(c,d) { (c) = (d) + 1; } // Comment here \
more comment here
これは非常識なマクロですが、コメントの2行目にコメント開始がないため、sed
スクリプトのヒューリスティック置換により、構文的に無効なプログラムが生成されます(「ここにコメントを追加」などのマクロがある場合を除きます)。有効なコードに展開されますが、これはほとんどありません)。
ヒューリスティックメカニズムが機能しない場合は、完全なCコメントストリッパーが必要になる可能性があります。インターネットのどこかで見つからない場合は、そのようなプログラムを使用しています(テストファイルには、上記の恐ろしいものなどのコメントが含まれています)。プロファイルを参照してください。