#define怎么知道什么时候停止寻找?

问题描述 投票:0回答:1

我在C++中使用一个宏来切换编译日志或不编译日志。

#define MAYBE_LOG(msg) 
#ifdef PRINT_MSGS 
ALWAYS_LOG(msg) 
#endif

如何在 #define 知道结局在哪里吗?这... #endif 指的是 #ifdef,不是 #define.

c++ preprocessor preprocessor-directive
1个回答
2
投票

问题中的代码做了两件独立的事情:它定义了一个宏,名为 MAYBE_LOG 没有身体,如果 PRINT_MSGS 的宏,它使用一个名为 ALWAYS_LOG. 如果这不是它应该做的,那么,是的,它需要改变。由于问题没有说代码应该做什么,所以这只是一个猜测。

#ifdef PRINT_MSGS
#define MAYBE_LOG(msg) ALWAYS_LOG(msg)
#else
#define MAYBE_LOG(msg)
#endif

这样做的原因是(而不是使用) \ 在每一行上扩展宏定义,就是你不能将 #if 宏定义中的条件。


4
投票

#define 在行尾结束(可以用最后的 \)

© www.soinside.com 2019 - 2024. All rights reserved.