2011-07-11 5 views
3

私は現在、私はそれをやっている方法は、このようなものです、迅速/テスト中にコードを無効有効にするには、ネストされたコメントを使用しています:危険(デ)C++のコード・ブロックを活性化

//* First Case, Activated 
DoSomething(); 
/**/ 

/* Second Case, De-Activated 
DoSomethingElse(); 
/**/ 

私は、単に '/'を追加または削除するだけでコードブロックを有効、無効にすることができます。

ネストされたコメントはであり、であるため、コンパイラはこれについて警告しますが、実際にはこれらのコメントを使用するのは危険ですか?

+0

どのコンパイラを使用していますか?私はMSVCでこのトリックを苦情なしに使用したと確信しています。 –

+0

@マークランサムシークレット!主にGCCに準拠しています... – 3nixios

答えて

12

これは、人々は通常、これを行う方法です。

#if 0 
//... 
#endif 

または

#define TESTWITH 

#ifdef TESTWITH 
//.. 
#endif 
+5

または単に '#if 0'。 –

+0

私は '#ifdef BLAH_REMOVE'または' BLAH_DEBUG'を使うのが好きです。なぜなら、ifdefを見つけたら、本当に簡単に見つけることができるからです。 –

+0

あなたはどのIDを使用するか注意してください。私はかつて '#ifdef OUT'を使った人と仕事をしました。後で、実際に何かが「OUT」と定義されたときに、それを '#ifdef I_CANT_BELIEVE_OUT_WAS_DEFINED'に変更しました。 –

0

はい、多くの場合、オーバーフローまたはアンダーコメントが発生し、アクティブ以外のコードを使用するとデバッグが非常に混乱します。 //を使用すると、その方がはるかに信頼性が高くなります。さらに入力する必要がありますが、それはより予測可能です。

0

ない直接的な答えをしていますが、代わりの#ifdefと考えられてきましたか?

#define DOSOMETHING 

#ifdef DOSOMETHING 
DoSomething(); 
#else 
DoSomethingElse(); 
#endif 
0

なぜコードブロックを頻繁にオン/オフする必要があると感じますか?おそらく、あなたはより高いレベルで何か間違ったことをしているでしょう。

コードの異なるバージョンをテストするには、ソースコントロールを使用して2つ(またはそれ以上)のブランチを作成する必要があります。

コード全体をコメントアウトする代わりに、単一の関数呼び出しを変更するだけでよいように、コードをリファクタリングする必要があります。

あり、このようなネストされたコメントを乱用して何も間違っはありませんが、それは読んで、あなたのコードが難しくなり、それは一般的にはまったく違うレベルで解決すべき問題を解決します。通常のコメントの閉鎖は、あなたのノートを閉鎖し、コンパイラは何も検出されませんので、今

//* First Case, Activated 
DoSomething(); 
/**/ 

/* Second Case, De-Activated 
/* Comment about DoSomethingElse */ 
DoSomethingElse(); 
/**/ 

、2番目のケース実行します:ここで

+0

本当に作成する方が良いでしょうか? 2つの小さなコードブロックの分岐だけ?私はVCが分岐をサポートしていないので、私はそれをテストすることはできませんので、質問します。私はコードだけで作業しているので、問題はありません。 – 3nixios

+0

VCSで分岐を処理できない場合は、その分岐に切り替える必要があります。 :)しかし、あなたのコードがどのようなものか、どのコードブロックをオン/オフを切り替える必要があるのか​​、何の制約を受けているのかはわかりません。ネストされたコメントでうんざりする*あなたのケースではより良い選択肢かもしれません。しかし、たいていの場合、ほとんどの人にとって、解決策は私が提案したものの1つでなければなりません。 – jalf

0

は、あなたがトラブルに巻き込まれることができる方法です間違いです。

もちろん、これは決して/**/スタイルコメントを使用しないことで避けることができます。これは合理的なことであれば環境によって異なります。また、シンタックスハイライトエディタ(スタックオーバーフローの回答エディタも含む)は、何が起こっているのかを知ることができます。しかし、なぜその可能性を紹介しますか?

これは「かわいい」カテゴリにも該当します。 2つの異なるコメント構文を混在させています。誰もが何が起こっているのかを理解していれば、ルールによって再生されるので、あなたは大丈夫でしょう。しかし、誰かが困っているとすぐにあなたは困っています。

関連する問題