본문 바로가기

프로그램언어/C++

간단한 C++ 매크로 만들어보기.

  이상하게 제 머리 속에 지우게가 있다는 결론을 내리네요. 간단하게 사용하면서도 손가락은 기억을 하는데 정신 넉놓고 있으면 손가락은 기억을 하는지 잘 써내려갑니다. 그런데 머리 굴리면 그때 부터 손가락은 가만히 정지하게 되는 결론을 내렸습니다. 즉 머리를 쓰게 되면 모든걸 지워버리는 초강력... 머리속 지우개..ㅠ_ㅠ

매크로 관련되서 사용하려고 보니깐 기억이 또 안나네요.. 미치겠습니다..ㅠ_ㅠ



// 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 C2059
}