[C++] watch 매크로 트릭

여기에 변수 하나를 선언해서 변수의 이름과 값을 출력하는 간단한 프로그램이 있다. image

image 아무 문제가 없다. 하지만 맨날 저래 "num is..." 붙이려면 그 수고를 이루 다 말할 수가 없을 것이다.

그럼 저걸 함수화해볼까? 그렇다 하더라도 변수의 이름은 여전히 출력하기가 좀 불편하다.

여기서 매크로의 진가가 나타난다.


image

image 이러면 된다.
뒤에 나오는 #x는 x 자체를 그대로 문자열로 바꿔주기 때문이다.


#define watch(x) cout << (#x) << " is " << (x) << endl

C는 오버로딩이 없어서 실격