#define DEBUG
#ifdef DEBUG
#define PRINT print
#else
#define PRINT(...) ((void)0) //strip out PRINT instructions from code
#endif
void print(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
vsprintf(str, fmt, args);
va_end(args);
printf("%s\n", str);
}
int main() {
PRINT("[%s %d, %d] Hello World", "March", 26, 2009);
return 0;
}
컴파일러가 가변 매크로를 이해하지 못하는 경우 다음 중 하나를 사용하여 PRINT를 제거 할 수도 있습니다.
#define PRINT //
또는
#define PRINT if(0)print
첫 번째는 PRINT 명령어를 주석 처리하고 두 번째는 NULL if 조건으로 인해 PRINT 명령어를 방지합니다. 최적화가 설정되면 컴파일러는 다음과 같이 실행 된 명령어를 제거하지 않아야합니다. if (0) print ( "hello world"); 또는 ((void) 0);