8

次の関数で

int f (some_struct* p)
{
    (void) p;
    /* something else */
    return 0;
}

声明は何ですか

(void) p; 

平均?

4

4 に答える 4

2

「Cast to void」は C 言語のイディオムであり、慣例により、コンパイラとlint未使用の変数または戻り値に関する警告を抑制します。

この場合、Dietrich Epp が正しく指摘しているように、引数 を使用していないことがわかっていることをコンパイラに伝え、p「未使用の引数」に関する警告を出さないようにします。

このイディオムのもう 1 つの使用方法は、関数の戻り値を にキャストすることです。これは、関数の戻り値をわざわざチェックしないように意識的に決定したことを他のプログラマーvoidに伝える従来の方法です。lint例えば:

(void)printf("foo")

「値が返されることはわかってprintf()いるので、実際に確認する必要がありますが、気にしないことにしました」という意味になります。

于 2013-08-30T00:31:37.293 に答える