C++ 是给定#define';(无效)0?
我在C中有以下宏++C++ 是给定#define';(无效)0?,c++,macros,C++,Macros,我在C中有以下宏++ #define AppLogExceptionIf(condition, ...) ((void) 0) 我想知道条件是否仍然会被执行?我认为扩展相当于一个 false; 不考虑条件的语句,例如: AppLogExceptionIf(0 == (x = 5), "Big problem!"); 不会分配给x?否,条件将不会被评估。无论何时applogeException如果出现并带有括号,并且在编译器有机会看到代码之前,它后面至少有一个参数将被文本替换为((void)
#define AppLogExceptionIf(condition, ...) ((void) 0)
我想知道条件
是否仍然会被执行?我认为扩展相当于一个
false;
不考虑<代码>条件的语句,例如:
AppLogExceptionIf(0 == (x = 5), "Big problem!");
不会分配给
x
?否,条件将不会被评估。无论何时applogeException如果出现并带有括号,并且在编译器有机会看到代码之前,它后面至少有一个参数将被文本替换为((void)0)
,并且将完全不做任何事情,就像您所想的那样。宏将被文本替换,因此,在预处理器处理后,条件
甚至不会出现在源代码中。请定义“已执行”的含义。宏是不会被执行的,至少在我看来是这样的。可能是宏的重复我想我记得,我已经很久没有真正选择编写宏了。