C 매크로 함수 가변인자 - sonkoni/Koni-Wiki GitHub Wiki

매크로 함수의 가변인자

// 가변인자가 __VA_ARGS__ 에 할당되며, 인자를 생략할 수 없다.
#define VPRINT(...)             fprintf(stdout, __VA_ARGS__)
#define VPRINT(format, ...)     fprintf(stdout, format, __VA_ARGS__)

// 가변인자가 변수이름에 할당되며, 인자를 생략할 수 없다.
#define VPRINT(args...)         fprintf(stdout, args)

// 가변인자가 ##__VA_ARGS__ 에 할당된다. 이 가변인자는 생략할 수 있다.
#define VPRINT(format, ...)     fprintf(stdout, format, ##__VA_ARGS__)

가변인자는 항상 매개변수 제일 마지막에 와야 한다.

가변인자가 __VA_ARGS__ 에 할당되며, 인자를 생략할 수 없다.

#define VPRINT(...)             fprintf(stdout, __VA_ARGS__)
VPRINT("Hello\n");
// Hello
#define VPRINT(format, ...)     fprintf(stdout, format, __VA_ARGS__)
VPRINT("%s : %d\n", "Hello", 3);
// Hello : 3

가변인자가 변수이름에 할당되며, 인자를 생략할 수 없다.

#define VPRINT(args...)         fprintf(stdout, args)
VPRINT("Hello\n");
// Hello

가변인자가 ##__VA_ARGS__ 에 할당된다. 이 가변인자는 생략할 수 있다.

#define VPRINT(format, ...)     fprintf(stdout, format, ##__VA_ARGS__)
VPRINT("Hello\n");
VPRINT("%s : %d\n", "Hello", 3);
                  ============ 이 가변인자는 생략 가능
// Hello
// Hello : 3