コンパイラの警告 (レベル 1) C4002

更新 : 2007 年 11 月

エラー メッセージ

マクロ '識別子' に指定された実引数の数が多すぎます。

マクロの実パラメータの数が、マクロ定義にある仮パラメータの数を超えています。プリプロセッサでは、余分なパラメータの収集はされますが、マクロの展開時には無視されます。

C4002 は、Variadic Macros が間違って使用されている場合に発生します。

次の例では C4002 警告が生成されます。

// C4002.cpp
// compile with: /W1
#define test(a) (a)

int main() {
   int a = 1;
   int b = 2;
   a = test(a,b);   // C4002
   // try..
   a = test(a);
}

このエラーは、マクロでは余分なコンマを使用できない Visual Studio .NET 2003 で行ったコンパイラ準拠作業の結果として生成されることもあります。

コンパイラは、マクロ内の余分なコンマを受け入れることができなくなりました。Visual Studio .NET 2003 と Visual Studio .NET の両方のバージョンの Visual C++ でコードを有効にするには、余分なコンマを削除します。

詳細については、「Summary of Compile-Time Breaking Changes」を参照してください。

// C4002b.cpp
// compile with: /W1
#define F(x,y)
int main()
{
   F(2,,,,,,3,,,,,,)   // C4002
   // Try the following line instead:
   // F(2,3)
}