VA_ARGS 매크로. 가변인자 형태의 매크로 또는 함수 정의.
// variadic_macros.cpp #include#define EMPTY #define CHECK1(x, ...) if (!(x)) { printf(__VA_ARGS__); } #define CHECK2(x, ...) if ((x)) { printf(__VA_ARGS__); } #define CHECK3(...) { printf(__VA_ARGS__); } #define MACRO(s, ...) printf(s, __VA_ARGS__) int main() { CHECK1(0, "here %s %s %s", "are", "some", "varargs1(1)\n"); CHECK1(1, "here %s %s %s", "are", "some", "varargs1(2)\n"); // won't print CHECK2(0, "here %s %s %s", "are", "some", "varargs2(3)\n"); // won't print CHECK2(1, "here %s %s %s", "are", "some", "varargs2(4)\n"); // always invokes printf in the macro CHECK3("here %s %s %s", "are", "some", "varargs3(5)\n"); MACRO("hello, world\n"); MACRO("error\n", EMPTY); // would cause error C2059, except VC++ // suppresses the trailing comma }
'Research > Source Repository' 카테고리의 다른 글
Python string bruteforce (0) | 2015.06.05 |
---|---|
[C#] array byte to hex string (0) | 2014.06.18 |
ThreadPool simple example (0) | 2013.11.03 |
Mutex - Event Simple Code (0) | 2013.10.10 |
simple critical section (0) | 2013.10.09 |