블로그 이미지

do while(0) 문을 쓰는 이유.

2014. 5. 10. 15:07

그냥 매크로 여러줄을 선언할 것을 왜 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);