UNREFERENCED_PARAMETERの役割



Role Unreferenced_parameter



作業に参加したばかりです。C言語で記述されていますが、ユニット内のコードを参照してください。ただし、さまざまなマクロ定義、さまざまな#defineおよび#typedef、コードを参照して、私が人生を疑っているのを見てください。コード内の一般的なマクロ定義の1つは、UNREFERENCED_PARAMETERです。では、このマクロ定義はどういう意味ですか?どのように使用されますか?

UNREFERENCED_PARAMETERは、winnt.hヘッダーファイルで定義されているマクロです。



#define UNREFERENCED_PARAMETER(P) (P)

MSDNドキュメントをクエリすると、次のように表示されます。

UNREFERENCED_PARAMETERは、渡されたパラメーターまたは式に展開されます。その目的は 参照されていないパラメーターに関するコンパイラーの警告を回避するため。 本当にあなたを含む多くのプログラマーは、最高の警告レベル、レベル4(/ W4)。レベル4の警告は、「安全に無視できるもの」のカテゴリに分類されます。見栄えが悪くなる可能性はありますが、コードを壊さない小さな欠陥。



言い換えると、このマクロ定義の目的は、コンパイラが一部のユーザーによって宣言された変数を警告しないようにすることですが、レベル4の最高の警告レベルのコンパイル条件下では使用されません-'正式なパラメーターは関数の本体で参照されません。 '。といった:

// C4100.cpp // compile with: /W4 void func(int i) { // C4100, delete the unreferenced parameter to //resolve the warning // i // or, add a reference like this } int main() { func(1) }

上記のコードでは、関数funcの仮パラメーターが関数本体で使用されたことがないため、レベル4のコンパイル時に警告が生成されます。現時点では多くの解決策があります。関数の本体でこの変数を使用するか、関数全体をパラメーター化する必要はありません(これは非常にまれです)。次のコードをに追加する方法があります。関数の本体:

UNREFERENCED_PARAMETER(i)

これは、UNREFERENCED_PARAMETERマクロ定義が行うことです。