Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
sinus
Зарегистрирован: 03.12.2005 Сообщения: 6
|
Добавлено: Сб Дек 03 2005 14:08 Заголовок сообщения: работа с ellipsis (...) |
|
|
Господа может кто задумывался как зделать следующее:
void CLoger::DoLog(char * format,...)
{
printf(format,...);
}
т.е. передать переменное число аргументов другой функции. _________________ Это п....ц, а п....ц мы не лечим. ![Wink](images/smiles/icon_wink.gif) |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
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
{
// Выбери из стека параметры и положи в локальные переменные
}
}
// Делай что хочешь
}
|
|
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
sinus
Зарегистрирован: 03.12.2005 Сообщения: 6
|
Добавлено: Пн Дек 05 2005 19:59 Заголовок сообщения: |
|
|
Хорошая мысль!!!
Благодарю!! _________________ Это п....ц, а п....ц мы не лечим. ![Wink](images/smiles/icon_wink.gif) |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
adonin
Зарегистрирован: 11.10.2005 Сообщения: 35
|
Добавлено: Пт Дек 16 2005 19:39 Заголовок сообщения: |
|
|
Есть способ лучше, без использования ассемблера. смотри MSDN: va_list, va_arg, va_end, va_start. Даже пример есть ![Exclamation](images/smiles/icon_exclaim.gif) |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
sinus
Зарегистрирован: 03.12.2005 Сообщения: 6
|
Добавлено: Пт Дек 16 2005 21:51 Заголовок сообщения: |
|
|
adonin писал(а): | Есть способ лучше, без использования ассемблера. смотри MSDN: va_list, va_arg, va_end, va_start. Даже пример есть ![Exclamation](images/smiles/icon_exclaim.gif) |
обязательно посмотрю но:
1. Какой MSDN.
2. Это пишется для FreeBSD, не уверен что поможет но попробую.
Дуже дякую _________________ Это п....ц, а п....ц мы не лечим. ![Wink](images/smiles/icon_wink.gif) |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
|