我在C++中使用一个宏来切换编译日志或不编译日志。
#define MAYBE_LOG(msg)
#ifdef PRINT_MSGS
ALWAYS_LOG(msg)
#endif
如何在 #define
知道结局在哪里吗?这... #endif
指的是 #ifdef
,不是 #define
.
问题中的代码做了两件独立的事情:它定义了一个宏,名为 MAYBE_LOG
没有身体,如果 PRINT_MSGS
的宏,它使用一个名为 ALWAYS_LOG
. 如果这不是它应该做的,那么,是的,它需要改变。由于问题没有说代码应该做什么,所以这只是一个猜测。
#ifdef PRINT_MSGS
#define MAYBE_LOG(msg) ALWAYS_LOG(msg)
#else
#define MAYBE_LOG(msg)
#endif
这样做的原因是(而不是使用) \
在每一行上扩展宏定义,就是你不能将 #if
宏定义中的条件。
#define
在行尾结束(可以用最后的 \
)