学习 C++ 并阅读一个项目,我发现了这个。
#define EMPTY_MACRO do {} while (0)
...
#if ASSERTS_ENABLED
#define ASSERTCORE(expr) assert(expr)
#else
#define ASSERTCORE(expr) EMPTY_MACRO
#endif
EMPTY_MACRO
的目的是什么? ?是没有必要还是有原因?
最佳答案
就在那里
ASSERTCORE(expr);
无论有无 ASSERTS_ENABLED,其行为都相同。普通的 #define ASSERTCORE(expr)
会留下一个单独的 ;
,并且在某些情况下会有不同的行为。
关于c++ - 在 C++ 中使用对空宏不执行任何操作的宏是否有目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72775443/