Игнорируйте использование функции C++ во время компиляции, имеющей оператор<<C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Игнорируйте использование функции C++ во время компиляции, имеющей оператор<<

Сообщение Anonymous »

Я разрабатываю API, похожий на ведение журнала GLib.
Мой 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))
main.c

Код: Выделить всё

#include 

int main()
{
printf_debug("Hello world !");      // Show in any debug context

return 0;
}
Если я скомпилирую без флага -DDEBUG, ни моя макрофункция printf_debug(), ни строка «Hello» не останутся.

Я хотел бы сделать то же самое в C++ с оператором

Подробнее здесь: https://stackoverflow.com/questions/791 ... g-operator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»