|
функция (макрос?) DEBUG, отправка сообщений в порт |
|
|
|
Sep 20 2015, 18:10
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Добрый вечер! Хочется реализовать дебажную функцию, чтобы было что-то типа DEBUG("Var rct=%d\n", rct); в общем аналог printf Все упирается в то, что fputc уже переопределен для других целей. Нужно как-то в этой DEBUG задействовать sprintf и отправлять это дело по дебажному USART Подскажите, как? Или как вообще такие вещи делаются? Где-то встречал подобное некоторое время назад, да позабыл где, никак не найду
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Sep 20 2015, 19:35
|

Местный
  
Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502

|
Цитата(toweroff @ Sep 20 2015, 19:10)  Добрый вечер! Хочется реализовать дебажную функцию, чтобы было что-то типа DEBUG("Var rct=%d\n", rct); в общем аналог printf Подскажите, как? Или как вообще такие вещи делаются? Где-то встречал подобное некоторое время назад, да позабыл где, никак не найду  Google: "variadic macros"
|
|
|
|
|
Sep 20 2015, 20:00
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (CrimsonPig @ Sep 20 2015, 22:35)  Google: "variadic macros" Это для другого - для обертки функций с переменным числом аргуменов в макросы. Тоже, конечно, удобно для отладочных макросов, например: CODE #define dprintf( debug_flags, args ... ) if( debug_flags & debug_config ){ xprintf( args ); } но не то, что хотел Автор.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 20 2015, 20:06
|

Местный
  
Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502

|
Цитата(zltigo @ Sep 20 2015, 21:00)  Это для другого - для обертки функций с переменным числом аргуменов в макросы. Тоже, конечно, удобно для отладочных макросов, например: но не то, что хотел Автор. Ну не знаю, чего ТС конкретно хотел, но получить макросы (с разделением debug/release) и работающие как printf (с переменным числом параметров) это точно к variadic macros. а что уж внутри делать с va_arg, это как пойдет.
|
|
|
|
|
Sep 20 2015, 20:13
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zltigo @ Sep 20 2015, 23:06)  "= 0" глаз режет  . Лишний, да. Просто код выкорчевал неаккуратно. Цитата(zltigo @ Sep 20 2015, 23:06)  Ну и в общем лишний промежуточный буфер, который в общем случае очевидно придется перекидывать в какой-то другой, который уже будет разгружаться. ТС хотел sprintf, пример дан.
|
|
|
|
|
Sep 20 2015, 20:18
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (aaarrr @ Sep 20 2015, 23:13)  ТС хотел sprintf, пример дан. В принципе годится, просто указатель буфера vsnprintf() двигать нужно в буфере. Тогда этот-же буфер и для разгрузки использовать можно. P.S. Я для отладки использую свой простенький, но зато максимально быстрый "printf()".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|