下面的宏可以用于什么?

时间:2011-03-31 15:04:42

标签: c macros

#define MEMCACHED_COMMAND_GET(arg0, arg1, arg2, arg3, arg4)
#define MEMCACHED_COMMAND_GET_ENABLED() (0)

上面的宏似乎完全没用,它们可以用于什么?

1 个答案:

答案 0 :(得分:11)

这些宏可能有几个定义,您将根据编译标志选择一个或另一个。 这样就可以仅在内置调试模式时提供调试信息。

例如,在memcached_dtrace.h中,有类似的内容:

#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

这些命令仅在构建时激活ENABLE_DTRACE时执行某些操作。