【发布时间】:2013-01-05 17:10:28
【问题描述】:
我正在阅读有关 __noop 的信息,而 MSDN 示例是
#if DEBUG
#define PRINT printf_s
#else
#define PRINT __noop
#endif
int main() {
PRINT("\nhello\n");
}
而且我没有看到仅仅拥有一个空宏的好处:
#define PRINT
生成的代码是一样的。使用__noop 的有效示例是什么?
【问题讨论】:
-
我猜在某些情况下“没有声明”会改变事情的运作方式。不完全确定我现在能想到一个。
-
顺便说一句,他们的示例有点狡猾,因为它会导致在调试和发布模式下具有不同类型的表达式。但它不像调试模式中的类型那样狡猾,无论
PRINT的“参数”是什么!可变参数宏允许更好地定义#define PRINT(...) ((void)printf_s(__VA_ARGS__))和#define PRINT(...) ((void)0),这也阻止了您尝试使用&PRINT获取函数指针。
标签: c++ visual-c++ intrinsics