이 macro의 기능은 뭘까요?
글쓴이: 라스코니 / 작성시간: 월, 2016/06/20 - 4:35오후
어떤 네트웍카드 드라이버 소스 코드를 분석하다 보니 아래와 같은 macro가 나오는데 어떤 기능때문에 쓰는 걸까요?
#define _func_enter_ do{}while(0) #define _func_exit_ do{}while(0)
이 macro를 함수 내용 시작부와 종료부에서 사용하거든요???
예를 들어 아래와 같이 씁니다. 혹시 뭐 때문에 쓰는지 아시는 분 있는지요?
int func(int a, int b) { _func_enter_; // do something _func_exit_; return x; }
Forums:
약간의 시간을 벌려고 하는게 아닐까요?
약간의 시간을 벌려고 하는게 아닐까요?
...
개발중에 매크로 정의를 바꿔치면 단순무식한 디버깅 용도로 쓸 수 있습니다. 예를 들면,
(커널 드라이버라면 printf는 안될 테니 뭔가 적당히 비슷한 다른 함수를 썼겠죠.)
그리고 개발이 다 끝나서 소스를 공개할 때는 더 이상 로그를 남길 필요가 없으니 "아무 것도 안하는" 매크로로 바꿔서 올리면 되는 거죠.
충분히 가능성 있는 방법이네요. call trace
충분히 가능성 있는 방법이네요.
call trace 할 때 유용하겠군요.
댓글 달기