以下は、オープン ソース プロジェクトのコードで見つけたものです。
#if 0
static int print_cb(UNUSED void *ctx, void *i)
{
fprintf(stderr, "%i\n", *(int*)i);
return 0;
}
#endif
これが常に false if の理由を説明できますか?
ありがとう。
以下は、オープン ソース プロジェクトのコードで見つけたものです。
#if 0
static int print_cb(UNUSED void *ctx, void *i)
{
fprintf(stderr, "%i\n", *(int*)i);
return 0;
}
#endif
これが常に false if の理由を説明できますか?
ありがとう。
これは、プリプロセッサを使用して大きなコード ブロックをコメント アウトする (コンパイルを防ぐ) 方法にすぎません。それはかなり一般的です。
ネストしないため、実際のコメント構文を使用するよりも優れています。あなたが持っている場合:
int foo = 13; /* This won't be needed. */
次のようにしてコメントアウトすることはできません。
/*
int foo = 13; /* This won't be needed. */
*/
コメント構文はネストしないため、上記はコンパイルされません。メソッドを使用すると、#if 0
その制限を回避できます。
コードをコメントアウトする方法です。条件が満たされることはありません (0 が true になることはありません) ため、プリプロセッサはコンパイルからコードを除外します。
/* */
これは通常、別の複数行コメントで囲んでコメントアウトできない複数行コメントが埋め込まれている可能性のある大きなコードブロックで使用されます。
これは、複数行コメントのようなこのコード セクションを無効にするだけです。ネストされたコメントを避ける方が良い方法です。
プリプロセッサ ディレクティブは、プログラム ステートメントではなく、プリプロセッサのディレクティブであるプログラムのコードに含まれる行です。これらの行の前には常にハッシュ記号 (#) が付きます。プリプロセッサは、コードの実際のコンパイルが開始される前に実行されるため、ステートメントによってコードが生成される前に、プリプロセッサはこれらすべてのディレクティブを消化します。
ということで、ブロックに入らずスキップという#if 0
ことで(ざっくり言うと)、ということになります。#if (false)
何かをコメントアウトする方法。