CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): testors (testors)
날 짜 (Date): 2004년 9월 16일 목요일 오후 05시 08분 11초
제 목(Title): Re: C Macro 


>  문제는 디버거에서 동작이 보이는 상식적인(?) 디버거가 없기 때문이겠죠.
>  디버거가 macro expansion을 보여주면서 tracing해 나가는 그런 놈이 있었다면,
>  간단히 해결 되었겠죠?

open("blah",O_CREAT|O_TRUNC|O_WRONLY) 를
open("blah",0x0601) 으로 바꿔놓은것을 보고 의미를 이해하면서
디버깅할 자신이 있으십니까?  :)

디버거 소스창은 사람이 보라고 있는거죠.
말씀하신 디버거는 나온다 해도 쓰기 힘들겁니다.
앞으로 나올 이유도 없구요.

>  nested if를 잘 못 쓴 경우에 어떤 의미 있는 에러 메세지가 
>  나오나요? 컴파일러는 어차피 시킨 일을 할 뿐입니다.

최소한 문제가 if 근처에 있다는 것은 알 수 있겠죠. 

>  macro는 컴파일 될 코드자체를 만들어낼 일종의 언어이기 때문에, 
>  macro 정의를 디버깅 하실려면, macro의 수행 결과인
>  코드가 제대로 만들어 졌는지 확인해야 하는 것입니다. 

그러니까 문제가 매크로로 인한것이라는걸 알기만 한다면 이후의 디버깅이야 그닥
문제가 되지 않습니다. 대개 매크로 정의만 보면 구지 디버거나 컴파일러가 친절히
확장해 주지 않아도 사람이 고칠 수 있어요. 하지만 윗글에 적었듯이 매크로의
문제는 그 원인이 매크로인지를 발견하기가 힘들다는데 있습니다.

- Testors
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.