Re[2]: копирование стека параметров функции
От: __Andrey__  
Дата: 16.09.02 07:29
Оценка:
Здравствуйте bnk, Вы писали:

bnk>Здравствуйте __Andrey__, Вы писали:


bnk>А стандартным спсобом (через va_list) чем-то не устраивает ?

bnk>Т.е. что мешает написать так

bnk>
bnk>void Func2(IObj& aObj,...) 
bnk>{ 
bnk>  va_list marker;
bnk>  va_start(marker, aObj);
bnk>  int param1 = va_arg(marker, int);
bnk>  int param2 = va_arg(marker, int);
bnk>  long param3 = va_arg(marker, long);
bnk>  Func3(param1, param2, param3);
bnk>  va_end(marker);
bnk>} 

bnk>void Func3(int param1,int param2,long param3) 
bnk>{ 
bnk>}
bnk>


Тут все несколько сложнее.
Нужно решение с помощью которого
функции могут иметь любые параметры.
Первый всегда — указатель на некий обьект
остальные неизвестны и любое количество.

Т.е. в конечном итоге как я это вижу —
одно решение на любое количество параметров через один два макроса.

1 —

viod iFunc1(IObj* a,int a1,long a2,char a3)
{
return sFunc1(a,a1,a2,a3);
}
void sFunc1(IObj* a,...)
{
// общее рещение на передачу пораметров в
// return Func1()
}
void Func1(int a1,long a2,char a3)
{
// ...
}

2 —

viod iFunc2(IObj* a,char* a3)
{
return sFunc1(a,a3);
}
void sFunc2(IObj* a,...)
{
// общее рещение на передачу пораметров в
// return Func2()
}
void Func2(char* a3)
{
// ...
}

к сожалению Выше решение
возможно только если знать типы и количество параметров.
сдесь этого нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.