매크로에서 return을 쓰면 그 값을 반환하는 거라 생각하신 듯 하네요. 하지만 C/C++의 매크로는 단순 치환에 불과하기 때문에, 저런 내용을 실제로 쓰면 return 문은 그 매크로가 사용된 함수로부터 빠져 나오는 역할을 하게 됩니다. (말 그대로 단순 치환이니까... return을 그대로 쓰는 것과 같죠) doldori 님께서 쓰신 것처럼 저런 종류의 매크로는 하나의 수식으로 표현될 수 있게 만들어야 하거나, inline function으로 대체하는 것이 좋습니다.
return을 쓴 걸 보니 함수인가 보죠? 하지만 간단하게 식으로 표시할
return을 쓴 걸 보니 함수인가 보죠? 하지만 간단하게 식으로 표시할 수 있습니다.
매크로를 사용한다면 그냥 있는 그대로 두는게 더 깔끔할듯 하군요.저
매크로를 사용한다면 그냥 있는 그대로 두는게 더 깔끔할듯 하군요.
저 상태 그대로가 그냥 보기 편합니다.
만약 매크로를 사용하기 싫으시다면...
inline BOOL CPMB_VALIDATE_EVENT(xxx* p, int i) { if(i == CPMB_MAX_SIGNAL) return FALSE; if(p->event_table[i].head.in_use) return TRUE; return FALSE; } 사용: return CPMB_VALIDATE_EVENT(p,i);하면 되겠군요...
저같으면 그냥 함수로 만들어 사용하는편에 한표 입니다.
매크로 자체가 가독성과 디버깅을 어렵게 하기 땜시...
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
Re: 매크로를 깔끔하게 만들고 싶습니다.
매크로에서 return을 쓰면 그 값을 반환하는 거라 생각하신 듯 하네요. 하지만 C/C++의 매크로는 단순 치환에 불과하기 때문에, 저런 내용을 실제로 쓰면 return 문은 그 매크로가 사용된 함수로부터 빠져 나오는 역할을 하게 됩니다. (말 그대로 단순 치환이니까... return을 그대로 쓰는 것과 같죠) doldori 님께서 쓰신 것처럼 저런 종류의 매크로는 하나의 수식으로 표현될 수 있게 만들어야 하거나, inline function으로 대체하는 것이 좋습니다.
- 토끼군
댓글 달기