реклама на сайте
подробности

 
 
> Как передать переменное число параметров в функцию
west329_
сообщение Apr 28 2010, 18:06
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Разбираюсь в чужом коде. Код написан красиво.

В критических секциях используется функции отладки типа:
Код
debug_mod1("\r\nNew Frame %LU %LU %U:  PROT=%LX ", modem_next, modem_last, modem_overrun, frame->protocol);
debug_mod1("\r\nNO CARRIER HANGUP");


но по умолчанию отладка в некоторых файлах не используется, а описывается как
Код
#define debug_mod1


и при сборке компилятор вежливо предупреждает, что строка пропускается
Код
>>> Warning 207 "D:\Main_prj\stacktsk.c" Line 405(1,1): Code has no effect


Требуется эти строки отладки оживить, для это используется стандартная рабочая процедура типа
Код
fprintf(USER,"%U.%U.%U.%U",ip->v[0],ip->v[1],ip->v[2],ip->v[3]);

которя работает в цикле main() и отображет только маленькую часть служебной информации.

Как правильно связать эти фунции через #define ? там где используется передача нескольки параметров ?.
Мне удалось связать только часть отладочной информации типа:
Код
#define debug_stack(x) fprintf(USER, x);


но
Код
debug_stack(x)
содержит только текст без параметров

но есть в некоторых файлах вместе с списком параметров типа:
Код
debug_mod1("\r\nNew Frame %LU %LU %U:  PROT=%LX ", modem_next, modem_last, modem_overrun, frame->protocol);


как такую функцию переопределить для fprintf() ?

Использую MPLAB CCS для PIC18


Не знаю стоит ли с параметрами залазить в
Код
#include <stdarg.h>
, может существует какоето более изящное рещение типа:
Код
#define debug_mod1(format, ...) fprintf (USER, format, ...);
???
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 00:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01347 секунд с 7
ELECTRONIX ©2004-2016