I was reading about __noop and the MSDN example is
#if DEBUG
#define PRINT printf_s
#else
#define PRINT __noop
#endif
int main() {
PRINT(\"\\nhello
#define PRINT
extern int some_complicated_calculation();
PRINT("%d\n", some_complicated_calculation());
would call the function even though you don't want the result.
Using __noop
, the function won't be called.
You could (assuming the compiler supports variadic macros) define PRINT
to ignore the arguments; but then they won't be parsed at all, and may become invalid if you change the code around them without compiling the variant that defines PRINT
to do something. Using __noop
, the arguments are still parsed, so are more likely to remain valid.