Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как передать все необязательные параметры (...) из одной функции в другую с (...)? / 4 сообщений из 4, страница 1 из 1
15.04.2004, 12:13
    #32482466
Ой Вэй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать все необязательные параметры (...) из одной функции в другую с (...)?
Есть функция с переменным числом параметров:
void f(int n, ...);
Понимаю, что нехорошо, но хочется передать это ... в CString::FormatMessage().

А не получается...

Как передать в ::FormatMessage, я понимаю. Но лень :)

Проблема не важная и не срочная, но мне интересно.
...
Рейтинг: 0 / 0
16.04.2004, 08:11
    #32483651
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать все необязательные параметры (...) из одной функции в другую с (...)?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void First(char *szFmt,...)
{
	char szText[MAX_PATH];
	va_list		a;
	va_start(a,szFmt);
	wvsprintf(szText,szFmt,a);
	CString cstr;
	сstr.Format( "%s" , szText);
}


так пойдёт? :)
...
Рейтинг: 0 / 0
19.04.2004, 12:04
    #32486099
Ой Вэй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать все необязательные параметры (...) из одной функции в другую с (...)?
Разумеется, не пойдёт.

Во-первых, это ответ не на тот вопрос. Меня интересует не как обойтись в данном случае, а решаема ли эта проблема вообще.

Во-вторых, wvsprintf() НЕ эквивалентна FormatMessage().
...
Рейтинг: 0 / 0
20.04.2004, 07:30
    #32487128
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать все необязательные параметры (...) из одной функции в другую с (...)?
Все проблемы решаемы :)

Вопрос в том, скоко уйдёт сил и времени.

Можно, конечно, самому напрямую в стек лезть.
Потому как в каждый конкретный вызов FormatMessage переменные забиваются статическим порядком.
Но вообще надо подумать... может можно как-то и объехать.
Например по-элементрым разбором.
То есть взял первый элемент из листа, посмотрел его тип и сказал, к примеру

cstrTmp.FormatMessage("%1!d!", iVar);
cstrTarger.FormatMessage(%1%%2%,cstrTmp,cstrTarger);//возможно, глюк

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


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