"매크로화 된"매크로 ("#define name value, value, value"형식의 매크로)가 있습니다.이 매크로를 매크로에 전달하고 싶지만 오류가 발생하면 .매크로 매개 변수
예 : 시각 CI의 GET에서
void fn(int a, int b, int c){ return; }
#define MACRO_1(a, b, c) fn(a, b, c)
#define MACRO(...) MACRO_1(__VA_ARGS__)
#define PARAM1 1
#define PARAM2 2, 2
#define PARAM3 3, 3, 3
int main(int argc, char * argv[]){
MACRO(0,0,0);
MACRO(PARAM1,1, 1);
MACRO(PARAM2,2);
MACRO(PARAM3);
return 0;
}
:. 이것은 비주얼 C++ 컴파일러의 버그
1>c:\main.c(10): warning C4003: not enough actual parameters for macro 'MACRO_1'
1>c:\main.c(10): error C2059: syntax error : ','
1>c:\main.c(11): warning C4003: not enough actual parameters for macro 'MACRO_1'
1>c:\main.c(11): error C2059: syntax error : ','
1>c:\main.c(12): warning C4003: not enough actual parameters for macro 'MACRO_1'
1>c:\main.c(12): error C2059: syntax error : ','
1>c:\main.c(13): warning C4003: not enough actual parameters for macro 'MACRO_1'
1>c:\main.c(13): error C2059: syntax error : ','
Visual C에서 버그처럼 보입니다.'MACRO'는 여러 개의 인수 (...)를 사용하며 매크로에'#'또는'## '을 사용하지 않으므로 인수 (' PARAM1','PARAM2' 등)은 본문의'MACRO_1'이 검사되거나 확장되기 전에 확장되어야합니다. –