3
#define MEMCACHED_COMMAND_GET(arg0, arg1, arg2, arg3, arg4)
#define MEMCACHED_COMMAND_GET_ENABLED() (0)
위의 매크로는 완전히 쓸모없는 것처럼 보입니다. 무엇을 위해 사용할 수 있습니까 ??아래 매크로는 무엇을 사용할 수 있습니까?
#define MEMCACHED_COMMAND_GET(arg0, arg1, arg2, arg3, arg4)
#define MEMCACHED_COMMAND_GET_ENABLED() (0)
위의 매크로는 완전히 쓸모없는 것처럼 보입니다. 무엇을 위해 사용할 수 있습니까 ??아래 매크로는 무엇을 사용할 수 있습니까?
아마도 이러한 매크로에 대한 정의가 여러 가지있을 수 있으며 컴파일 플래그에 따라 하나 또는 그 이상의 매크로를 선택할 것입니다. 이렇게하면 인스턴스 디버그 정보가 디버그 모드로 빌드 된 경우에만 제공 될 수 있습니다. ENABLE_DTRACE
이 빌드시에 활성화 될 때
#if ENABLE_DTRACE
...
#define MEMCACHED_COMMAND_GET(arg0, arg1, arg2) \
__dtrace_memcached___command__get(arg0, arg1, arg2)
#define MEMCACHED_COMMAND_GET_ENABLED() \
__dtraceenabled_memcached___command__get()
...
#else
...
#define MEMCACHED_COMMAND_GET(arg0, arg1, arg2)
#define MEMCACHED_COMMAND_GET_ENABLED() (0)
...
#endif
그 명령에만 일을 할 : memcached_dtrace.h
의 예를 들어
빈 매크로는 빈 줄로 확장되며 아무 것도 컴파일되지 않습니다. 또한 디버깅 플래그를 사용하여 컴파일 할 때'LOG' 매크로를'fprintf'의 별명으로 정의하여 로그 메시지를 코드에 포함 시키거나 디버깅 플래그가 비활성화되었을 때 아무것도 확장하지 않는 것이 일반적입니다. Voila, 디버그 메시지가없고 런타임에 인쇄 속도를 늦출 필요가 없습니다. – Jonathan
['assert()'] (http://pubs.opengroup.org/onlinepubs/007908799/xsh/assert.h.html)은 이런 종류의 행동에 대한 또 다른 일반적인 예입니다. –