C++ 是给定#define';(无效)0?

C++ 是给定#define';(无效)0?,c++,macros,C++,Macros,我在C中有以下宏++ #define AppLogExceptionIf(condition, ...) ((void) 0) 我想知道条件是否仍然会被执行?我认为扩展相当于一个 false; 不考虑条件的语句,例如: AppLogExceptionIf(0 == (x = 5), "Big problem!"); 不会分配给x?否,条件将不会被评估。无论何时applogeException如果出现并带有括号,并且在编译器有机会看到代码之前,它后面至少有一个参数将被文本替换为((void)

我在C中有以下宏++

#define AppLogExceptionIf(condition, ...) ((void) 0)
我想知道
条件
是否仍然会被执行?我认为扩展相当于一个

false;
不考虑<代码>条件的语句,例如:

AppLogExceptionIf(0 == (x = 5), "Big problem!");

不会分配给
x

否,
条件将不会被评估。无论何时
applogeException如果
出现并带有括号,并且在编译器有机会看到代码之前,它后面至少有一个参数将被文本替换为
((void)0)
,并且将完全不做任何事情,就像您所想的那样。

宏将被文本替换,因此,在预处理器处理后,
条件
甚至不会出现在源代码中。

请定义“已执行”的含义。宏是不会被执行的,至少在我看来是这样的。可能是宏的重复我想我记得,我已经很久没有真正选择编写宏了。