error()
이 함수는 다음과 같이 오류 조건에서 사용됩니다.
error("invalid image width %d and image height %d in GIF file %s",wid,hei,name);
error()
함수가 호출되었습니다. 다른 인수 (변수 인수 함수)로 다른 장소에서.
함수 접근 방식이 잘 작동합니다.
이제이 함수를 매크로로 변환해야한다면 어떻게 할 수 있습니까? 나는 그것을 시도 :
#define error(format) {va_list args;\
printf("Error: ");\
va_start(args, format);\
vfprintf(stderr, format, args);\
va_end(args);\
printf("\n"); abort()}
하지만이 인수를 올바르게 인쇄하지 않습니다.
위의 매크로 정의에서 잘못된 점은 무엇입니까?
수정 프로그램은 무엇입니까?
@shawnchin : 고마워요. MSVC6.0, MSVS-2005 컴파일러에서 시도했지만 가변 인수 매크로를 지원하지 않습니다. GCC가 지원하는 것 같아요,하지만 이걸 지원하는 컴파일러 기반의 컴파일러는 알고 있나요? – goldenmean
@goldenmean :이 사이트에서는 ISO 스타일 Variadic 매크로가 MSVS-2005 Visual C++ (http://msdn.microsoft.com/en-us/library/ms177415(VS.80).aspx)에 소개되었습니다. –
@shawnchin : 컴파일러가이 가변 매크로를 컴파일 할 수 있도록 설정해야하는 특이한 MSVisual Studio 프로젝트 옵션이 있습니까? 몇 가지 옵션을 설정하려고했습니다. (예 : C++로 코드 컴파일) 컴파일러가 이러한 가변 매크로 확장 (C99 확장)을 받아들이도록하는 매크로가 있습니까? – goldenmean