Мой API также может отключать эти функции, если флаг -DDEBUG не передан в GCC. p>
Это означает, что в двоичном файле нет остатков, все эти функции отладки, включая их параметры, отсутствуют в исполняемом файле, если этот флаг не передан.< /p>
Он отлично работает на C, потому что это макрофункции, которые я могу легко заменить;
Пример на C
debug.h
Код: Выделить всё
#include
#include
#include "term.h"
/**
* @brief Print something in debug mode
* @details No loglevel/context
* @param format
* @param ... Parameters for format
*/
#define printf_debug(fmt, ...)
#define LOG_NONE 0
#define LOG_FATAL 1
#define LOG_ERROR 2
#define LOG_WARNING 3
#define LOG_INFO 4
#define LOG_DEBUG 5
#define LOG_TRACE 6
#if (defined(DEBUG))
#undef printf_debug
#define printf_debug(format, ...) \
fprintf(stderr, " " format "\n", __FILE__, __func__, __LINE__, ##__VA_ARGS__)
#endif // (defined(DEBUG))
Код: Выделить всё
#include
int main()
{
printf_debug("Hello world !"); // Show in any debug context
return 0;
}
Я хотел бы сделать то же самое в C++ с оператором
Подробнее здесь: https://stackoverflow.com/questions/791 ... g-operator
Мобильная версия