2011-07-23 22 views
6

これは一般的な問題であり、おそらくここでのいくつかの質問に似ているはずですが、私はその中にコメントがある複数の行(むしろメソッド)をコメントアウトする最良の方法を探しています。 SOの投稿はの完全なのようなものを#0のように使うことについての詳細を得ることができませんでした。C++のネストされたコメント

私はこのポストNested comments in Visual C++?をチェックアウトしましたが、私はWindowsプラットフォームではありません。

答えて

11

ほとんど正しいです。基本的にコードのセクションを「if-def」することが提案されています。あなたがしたいのは、プリコンパイラ指令#ifを使用してコードをブロックすることです。以下の例は、ifとendifの間のすべてを無視したいことを示しています。

#if 0 
/* Giant comment 
it doesn't matter what I put here */ 

// it will be ignored forever. 
#endif 

あなたの質問には一般的に答えます。化合物意見を持っている方法は、#if 0#endif間のものは、コンパイラによって無視されます、すなわち

/* 
    /* */ <--- this closes the first /* 
*/ <--- this dangles. 
1

、そこではありません。 (「コンパイラは」もそれを見てみることができます前に、あなたのプリプロセッサは、実際にそれを取り除くかもしれません!)

#if 0 

    /* 42 is the answer. */ 

    Have you tried jQuery? 

    @Compiler Stop ignoring me!! 

#endif 

あなたは#ifdefの使用する場合は、より良好に制御する必要があります:

// #define DEBUG 


#ifdef DEBUG 
    MyFunction(); 
    std::cout << "DEBUG is defined!"; 
#endif 


// Later in your code... 

#ifdef DEBUG 
    std::cout << "DEBUG is still defined!"; 
#endif 

最初の行のコメントを外すと、#ifdef DEBUGコードが突然コンパイラに表示されます。


P.S.あなたのコンパイラが最後*/のためにあなたにすべてのエラーを与えていないと仮定すると、出力は"c"あるべき

/* 
    cout << "a"; 
    /* 
     cout << "b"; 
    */ 
    cout << "c"; 
*/ 

:これは、これ以上の混乱をクリアする必要があります。

+1

gcc/g ++のコンパイル時にDEBUGを定義することができます。たとえば、デバッグビルドをコンパイルする場合は、 'gcc main.c -DDEBUG'を実行すると、そのコンパイル用にDEBUGが定義されます。これは、ファイル内でDEBUGを静的に定義するよりもはるかに融通性があります。 – Slubb

1

Visual Studioを使用していると仮定した別のルートには、現在選択されているすべてのコードにコメントを付ける便利なキーボードショートカットがあり、各行の前に//を追加します。コメントするコメントはCTRL+K + CTRL+C、コメントを外すにはCTRL+K + CTRL+Uです。

2

編集者が提供する手段を使用して、すべての行の先頭に//を追加します。

例えば、Vimでは、行を視覚的なブロックとしてマークしてから、すべての行の先頭にI//と挿入することができます。 Visual Studioでは、CTRL-K-Cショートカットを使用してコードブロックにコメントを付けることができます。

関連する問題