Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

работа с ellipsis (...)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
sinus



Зарегистрирован: 03.12.2005
Сообщения: 6

СообщениеДобавлено: Сб Дек 03 2005 14:08    Заголовок сообщения: работа с ellipsis (...) Ответить с цитатой

Господа может кто задумывался как зделать следующее:

void CLoger::DoLog(char * format,...)
{
printf(format,...);
}


т.е. передать переменное число аргументов другой функции.
_________________
Это п....ц, а п....ц мы не лечим. Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
adonin



Зарегистрирован: 11.10.2005
Сообщения: 35

СообщениеДобавлено: Сб Дек 03 2005 17:59    Заголовок сообщения: Ответить с цитатой

Пример обьявления подобной функции.
Параметры придётся вытаскивать из стека ассемблерной вставкой.

Код:


int func(int N, ...);

int main(int argc, char* argv[])
{
   func(3, /*...*/ 1, 2, 3);
   return 0;
}


int func(int N, ...)
{
   for (int i=0; i<N; i++)
   {
      _asm
      {
         // Выбери из стека параметры и положи в локальные переменные
      }

   }

// Делай что хочешь

}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sinus



Зарегистрирован: 03.12.2005
Сообщения: 6

СообщениеДобавлено: Пн Дек 05 2005 19:59    Заголовок сообщения: Ответить с цитатой

Хорошая мысль!!!

Благодарю!!
_________________
Это п....ц, а п....ц мы не лечим. Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
adonin



Зарегистрирован: 11.10.2005
Сообщения: 35

СообщениеДобавлено: Пт Дек 16 2005 19:39    Заголовок сообщения: Ответить с цитатой

Есть способ лучше, без использования ассемблера. смотри MSDN: va_list, va_arg, va_end, va_start. Даже пример есть Exclamation
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sinus



Зарегистрирован: 03.12.2005
Сообщения: 6

СообщениеДобавлено: Пт Дек 16 2005 21:51    Заголовок сообщения: Ответить с цитатой

adonin писал(а):
Есть способ лучше, без использования ассемблера. смотри MSDN: va_list, va_arg, va_end, va_start. Даже пример есть Exclamation

обязательно посмотрю но:
1. Какой MSDN.
2. Это пишется для FreeBSD, не уверен что поможет но попробую.

Дуже дякую
_________________
Это п....ц, а п....ц мы не лечим. Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...