共用方式為


編譯器警告 (層級 1,錯誤) C4002

類似函式的巨集引動過程 'identifier' 有太多引數

巨集中的實際參數數目超出巨集定義中的正式參數數目。 前置處理器會收集額外的參數,但會在巨集展開期間忽略這些巨集。

不正確地使用可變參數巨集時,會發生 C4002。

下列範例會產生 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 C++ 的 Visual Studio .NET 2003 和 Visual Studio .NET 版本中都有效的程式碼,移除額外的逗號。

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