CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): guest (easg) <211.177.254.29>
날 짜 (Date): 2003년 7월 20일 일요일 오전 01시 57분 08초
제 목(Title): Re: 디버그 정보 얻기 (파일이름/라인수)


#define ASSERT(cond)

if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}

----
위의 코드를 do { } while(0)으로 감싸주시는게 좋을 듯 합니다.

if(aaa) ASSERT(cond)
else bbb();

이런 코드가 있다면, else부분이 ASSERT 매크로의 if문에 걸리게 됩니다.

또한 ASSERT(cond)뒤에 ;를 덧붙이면,

if(aaa) if(!cond) { printf....} ; else bbb(); 로 preprocessing이 되어서

;가 null-statement로 파싱되어 else가 붙을 곳이 없게 됩니다.


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