| [ 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가 붙을 곳이 없게 됩니다. |