в C, что надлежащий путь состоит в том, чтобы определить printf как макрос, который распечатает только, когда Отладочный символ будет определен?
#ifdef DEBUG
#define DEBUG_PRINT(???) ???
#else
#define DEBUG_PRINT(???) ???
#endif
где??? то, где я не уверен, что заполнить
Я довольно часто встречал эту идиому:
#ifdef DEBUG
# define DEBUG_PRINT(x) printf x
#else
# define DEBUG_PRINT(x) do {} while (0)
#endif
Используйте ее как:
DEBUG_PRINT(("var1: %d; var2: %d; str: %s\n", var1, var2, str));
Дополнительные круглые скобки необходимы, потому что некоторые старые компиляторы C не поддерживают var-args в макросах .
#ifdef DEBUG
#define DEBUG_PRINT(...) do{ fprintf( stderr, __VA_ARGS__ ); } while( false )
#else
#define DEBUG_PRINT(...) do{ } while ( false )
#endif
Что-то вроде:
#ifdef DEBUG
#define DEBUG_PRINT(fmt, args...) fprintf(stderr, fmt, ## args)
#else
#define DEBUG_PRINT(fmt, args...) /* Don't do anything in release builds */
#endif