Как объяснено на странице предупреждения C4353 и во внутренней документации __noop
, использование 0
в качестве выражения функции указывает компилятору Microsoft C ++ игнорировать вызовы кфункция, но все еще генерирует код, который оценивает ее аргументы (для побочных эффектов).
В данном примере приведен макрос трассировки, который получает #defined
либо __noop
, либо функции печати, в зависимости от значениясимвол препроцессора DEBUG
:
#if DEBUG
#define PRINT printf_s
#else
#define PRINT __noop
#endif
int main() {
PRINT("\nhello\n");
}