次の関数で
int f (some_struct* p)
{
(void) p;
/* something else */
return 0;
}
声明は何ですか
(void) p;
平均?
次の関数で
int f (some_struct* p)
{
(void) p;
/* something else */
return 0;
}
声明は何ですか
(void) p;
平均?
「Cast to void
」は C 言語のイディオムであり、慣例により、コンパイラとlint
未使用の変数または戻り値に関する警告を抑制します。
この場合、Dietrich Epp が正しく指摘しているように、引数 を使用していないことがわかっていることをコンパイラに伝え、p
「未使用の引数」に関する警告を出さないようにします。
このイディオムのもう 1 つの使用方法は、関数の戻り値を にキャストすることです。これは、関数の戻り値をわざわざチェックしないように意識的に決定したことを他のプログラマーvoid
に伝える従来の方法です。lint
例えば:
(void)printf("foo")
「値が返されることはわかってprintf()
いるので、実際に確認する必要がありますが、気にしないことにしました」という意味になります。