ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
963652 Топик полностью
fk0, легенда (09.12.2019 23:34, просмотров: 569) ответил Constantin24_ на Как спрятать printf в релиз версии, не оборачивая его?
Непонятный вопрос и столь же невразумительные ответы. Если для отладки, то примерно так: https://coliru.stacked-crooked.com/a/c33b61d885d95d5e
#include <stdio.h> #if DEBUG #define LOG(...) (0 ? (void)printf(__VA_ARGS__) : logout(__VA_ARGS__)) void logout(const char *fmt, ...); #else /* production build */ #define LOG(...) (0 ? (void)printf(__VA_ARGS__) : eatargs(__VA_ARGS__)) #endif void eatargs(const char *fmt, ...); Принципиальные моменты: 1) if (0) printf("format...", args...) -- хотя и не компилируется, но всё равно проверяет соответствие строки формата и аргументов (альтернативой было бы использование __attribute__((format...)) для gcc; 2) проверка строки формата и для не-debug сборок (чтоб внесённая ошибка была сразу обнаружена); 3) аргументы вычисляются всегда... (что минимизирует ошибки). Подробности по ссылке (пример программы).
[ZX]