그냥 매크로 여러줄을 선언할 것을 왜 do while(0) 문 안에 넣어서 지정하는 것일까?
그 이유는 간단히 설명하면 아래와 같다.
'다중 구문의 매크로함수 전체가 도중에 멈추지 않고 실행되게 하기 위해서이다.'
무슨 말이냐 하면 아래의 코드를 보면 이해 할 것이다.
1. 정의된 매크로
#define FOO(x) \
printf("arg is %s\n", x);\
do_something_useful(x);
2. 사용 예
if(blah == 2)
FOO(blah);
3. 실제 내용
if(blah == 2)
printf("arg is %s\n", blah);
do_something_useful(blah);
4. 수정된 매크로
#define FOO(x) do {\
printf("arg is %s\n", x);\
do_something_useful(x);
while(0)
5. 수정된 매크로가 적용된 결과
if(blah == 2)
do{
printf("arg is %s\n", blah);
do_something_useful(blah);
}while(0);
'컴퓨터 > 프로그래밍 언어' 카테고리의 다른 글
가변 인자 매크로 (0) | 2014.05.10 |
---|---|
#if 1 또는 #if 0을 쓰는 이유 (0) | 2014.05.09 |
#define 뒤에 \를 붙이는 경우, 다중 줄로 #define을 선언하는 경우 (0) | 2014.05.09 |
[VS2010] C#에 C++로 만든 DLL 파일 추가하기 (0) | 2013.05.07 |
[C언어] 최대값 구하기 함수 (0) | 2012.08.06 |