2

Visual Studio 2003 を使用して、コメントを「コメント アウト」して、コメントではなくなることに気付きました。これには例が必要です:

私が持っている場合:

/*
int commented_out = 0;
*/

/* と */ を // でコメント アウトでき、/* と */ 内のコードは「コメント アウト」されなくなりました (テキストはコメント以外の色に変わりコンパイラは再びコードとして扱います)。そのようです:

///*
int commented_out = 0;
//*/

これは msvc 2003 に当てはまることがわかりました。これは通常の C++ の動作ですか、それともこのコンパイラで動作するのはまぐれですか?

4

3 に答える 3

19

ええ、これは完全に正常な動作です。C++ 標準では、a/*自体がコメント アウトされていない場合にのみ、a がコメント ブロックの開始点であると規定されています。上記の内容を使用して、1文字を追加/削除することにより、コードブロックをコメントまたはコメント解除します。コードの 2 つのブロックを切り替えるためのちょっとした小技で、そのうちの 1 つが常にコメント アウトされています。

//*
code block 1 (uncommented)
/*/
code block 2 (commented)
//*/

ここで、最初からスラッシュを 1 つ削除すると、

/*
code block 1 (commented)
/*/
code block 2 (uncommented)
//*/

本番コードで使用するものではありませんが、迅速なデバッグの変更に非常に役立ちます。

于 2008-11-11T23:47:37.047 に答える
10

//が入力ストリームで最初に検出されるため、どのコンパイラでも機能するはずです。

#if 0私はこの種のものに使用する傾向があり、次の#if 1ようにコメントを解除するように変更します。

#if 0
    int commented_out = 0;
#endif

これで、コメント マーカーについてまったく心配する必要がなくなりました。

于 2008-11-11T23:40:13.023 に答える