4

タイトルのように、gcc / g ++で-Wallオプションを使用して、複数行のコメント警告をオフにするにはどうすればよいですか?

コメントは次のようになります。

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

3 に答える 3

9

複数行のコメントには/*..*/を使用できます。

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

よろしくお願いします、マティアス

于 2013-01-10T19:56:59.360 に答える
1

GCCの警告はここに文書化されています:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

具体的には、次のものを探しています。

-コメント

コメント開始シーケンス/*' appears in a/*'コメント、またはバックスラッシュ-改行が`//'コメントに表示されるたびに警告します。この警告は-Wallによって有効になります。

したがって、その警告をオフにするには、を使用できるはずです-Wno-comment

于 2013-01-12T20:50:27.323 に答える
0

バックスラッシュの継続は警告を引き起こします。次の行をコメント開始で開始する場合は必要ありません。

バックスラッシュの続きを削除し、行の先頭にあるバックスラッシュを//(記述されているように、コメントではありません)に置き換えて、警告を鎮める必要があります。

次のように書くこともできます。

/\
\
* 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コメントストリッパーが必要になる可能性があります。インターネットのどこかで見つからない場合は、そのようなプログラムを使用しています(テストファイルには、上記の恐ろしいものなどのコメントが含まれています)。プロファイルを参照してください。

于 2013-01-12T19:32:52.700 に答える