[ CnUnix ] in KIDS 글 쓴 이(By): swhan (Nameless 1) 날 짜 (Date): 2004년 6월 15일 화요일 오전 12시 12분 09초 제 목(Title): Re: [Q] 매크로 문법중에 ____ 위에 몇 번 나온 얘기인데.. 매크로를 함수처럼 이용하기 위해 2개 이상의 명령을 주는 매크로의 code block을 1줄처럼 동작하도록 해줍니다. # define TRACE_RETURN(V) \ do { ____.setLine(__LINE__); return V; } while(0) # define TRACE_RETURN_VOID() \ do { ____.setLine(__LINE__); } while(0) { blah blah blah; if( ? ) TRACE_RETURN(0); else TRACE_RETURN_VOID(); } ==> { blah blah blah; if( ?) do { ____.setLine(줄번호); return 0;} while(0); else do { ____.setline(줄번호);} while(0); } 만약 # define TRACE_RETURN(V) \ { ____.setLine(__LINE__); return V; } 이라면 { if( ?) { ____.setLine(줄번호); return 0;}; else { ____.setLine(줄번호);}; } else에서 compile error가 뜨게 됩니다. 저라면... MACRO를 모두 do while로 묶느니... if와 else사이를 무조건 {}로 묶는 코딩습관을 들이겠습니다. 뭐 이미 저런식으로 작성된 코드 갖다 쓰려면 어쩔 수 없는 경우도 있긴합니다. |