다음을 통해 공유


컴파일러 경고(수준 1) C4002

업데이트: 2007년 11월

오류 메시지

'identifier' 매크로의 실제 매개 변수가 너무 많습니다.
too many actual parameters for macro 'identifier'

매크로의 실제 매개 변수 개수가 매크로 정의의 정식 매개 변수 개수를 초과합니다. 전처리기는 추가 매개 변수를 수집하지만 매크로를 확장하는 동안 이 매개 변수를 무시합니다.

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 C++의 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)
}