powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / define my_printf(...)
24 сообщений из 24, страница 1 из 1
define my_printf(...)
    #39966773
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вывод в консоль в зависимости от дефайнов, например
Код: plaintext
1.
2.
3.
#ifdef(_DEBUG)
printf(...);
#endif


Хочу писать
Код: plaintext
1.
debug_printf(...);


а где-то в начале один раз определить
Код: plaintext
1.
2.
3.
4.
5.
#ifdef(_DEBUG)
#define debug_printf printf
#else
#define debug_printf ???
#endif


т.е. так чтобы если нет _DEBUG, то строка с debug_printf() просто игнорировалась.

Вроде что-то есть такое, но это нагуглить я не смог. Точки гугл игнорирует (((
...
Рейтинг: 0 / 0
define my_printf(...)
    #39966776
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Код: plaintext
1.
2.
3.
4.
5.
#ifdef(_DEBUG)
#define debug_printf(...) printf(__VA_ARGS__)
#else
#define debug_printf(...)
#endif


Попробуйте.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39966777
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tчтобы если нет _DEBUG, то строка с debug_printf() просто игнорировалась.

Код: sql
1.
#define debug_printf(...)


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
define my_printf(...)
    #39966810
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Помогло
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967209
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#ifdef __DEBUG_MACRO__
#define logVA(LogPriority, fmt, ...)  BWrapper::Log(LogPriority, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
#else
#define logVA(LogPriority, fmt, ...)
#endif

#define logVerbose(fmt, ...)  logVA(BWrapper::LogPriority::Verbose , fmt, ##__VA_ARGS__)
#define logDebug(fmt, ...)    logVA(BWrapper::LogPriority::Debug   , fmt, ##__VA_ARGS__)
#define logInfo(fmt, ...)     logVA(BWrapper::LogPriority::Info    , fmt, ##__VA_ARGS__)
#define logWarning(fmt, ...)  logVA(BWrapper::LogPriority::Warning , fmt, ##__VA_ARGS__)
#define logError(fmt, ...)    logVA(BWrapper::LogPriority::Error   , fmt, ##__VA_ARGS__)
#define logCritical(fmt, ...) logVA(BWrapper::LogPriority::Critical, fmt, ##__VA_ARGS__)


Ну а для __DEBUG_MACRO__ в свою очередь есть свое определение. BWrapper::Log - функция форматированного вывода.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967261
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно. Кодинг на макросах предполагает существование более чем 1 дистрибутива продукта.
И чем больше размерность переменных влияющих на макропроцессинг тем в квадрате или в кубе
у нас растет число дистрибуций.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967298
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Интересно. Кодинг на макросах предполагает существование более чем 1 дистрибутива продукта.
И чем больше размерность переменных влияющих на макропроцессинг тем в квадрате или в кубе
у нас растет число дистрибуций.

А кодинг на шаблонах сколько предполагает дистрибуций?
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967300
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967427
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Интересно. Кодинг на макросах предполагает существование более чем 1 дистрибутива продукта.
Ага. Release- и debug-сборки для трех платформ.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967430
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня на данный момент написано так:
[src#ifdef DEBUG
void Write(const char* const fmt, ...) __attribute__((format(gnu_printf, 1, 2)));
#else
// It will be optimized out but parameters still should be checked
inline void Write(const char* const, ...) __attribute__((format(gnu_printf, 1, 2)));
inline void Write(const char* const, ...) {}
#endif[/src]
потому что в релизной сборке всё равно неплохо бы проверять типы параметров.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967432
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i386, x86_64 и для операционок Linux, FreeBSD, Windows, MacOS. Это 2 * 4 = 8. И еще 2 типа отладочного режима. Еще на 2.
16 сборок. За вычетом того что никто не собирает i386 win/mac это минус 2 штуки допустим. Останутся только красноглазики
которые любят старое железо. Итого 14 сборок можно накопать.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967433
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Если есть macOS, то почему нет iOS и Android?
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967434
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен. Давай обратно накину. Только насчет андроидов я невкурсе сколько он различает мажорных
версий ОС и как там оно с совместимостью. У меня на планшете еще стоит старая 4.х а у жены на Xiaomi
там семерка или девятка ХЗ.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967435
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Если мы все-таки про плюсы для Android, то нам в первую очередь надо это https://developer.android.com/ndk/guides/abis
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967439
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad, там много букв. Вкратце. Сколько платформ получается?
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967440
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

4.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967442
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А имеет смысл для андроидных собирать с _DEBUG ?
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967445
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Да. Для вывода логов на консоль при USB-подключении посредством ADB. В маркете же распространяется только релизная сборка.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967447
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК.

14 + 8 = 22.

Итого 22 разные сборки одного С++ приложения для всех возможных платформ. Правда я не уверен что этот
вопрос лежит просто в плоскости макросов. Это скорее - 22 разных конфигурации билда.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967450
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Макросы - просто как инструмент - "разлохматить" бинарь.
А что здесь имеется в виду?
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967452
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поредактировал. Ах как хорошо править свои посты задним числом.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967502
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я все пытался понять, для чего мы считаем количество "дистрибуций", так и не понял.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39967507
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пускай это будет загадкой.
...
Рейтинг: 0 / 0
define my_printf(...)
    #39969721
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встряну.

Есть ещё такая полезная штука (под виндой, как минимум, но в STL присутствует, так что не уверен):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#include <CtrDbg.h>

_RPT0(rptno, msg);
//...
_RPT5(rptno, msg, ...);
// rptno - { _CRT_WARN, _CRT_ERROR, _CRT_ASSERT, _CRT_ERRCNT }
// msg - строка с форматом, как в printf



без дебага игнорируется, с дебагом кидает текст в отладочный поток
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / define my_printf(...)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]