Mega
> я не понял. зачем вам знать порядок параметров в стеке? ведь на корректность
> выполнения memcpy это не влияет?
А откуда memcpy-ть начинать будешь - с a или с c[0]?
Mega
Имелось в виду одним memcpy скопировать все параметры, а не по memcpy на каждый.
Но в любом случае так лучше не делать.
keltar
> Имелось в виду одним memcpy скопировать все параметры, а не по memcpy на
> каждый.
абсурд какой-то - лезть в машинно-зависимые, компиляторо-зависимые дебри хранения параметров в стеке, чтобы "сэкономить" одну микросекунду, вызвав копирование один раз вместо трех?
бред. у кого-то слишком много свободного времени.
keltar
> Но в любом случае так лучше не делать.
почему это нельзя делать memcpy на параметры?
Mega
> компиляторо-зависимые дебри хранения параметров в стеке
Да они все стандартизированы, надо просто явно декларировать тип вызова.
doc.
> Да они все стандартизированы, надо просто явно декларировать тип вызова.
1. несмотря на стандартизацию, стеки на разных платформах могут расти в разные стороны.
2. зачем? зачем извращаться?
Не надо вырывать цитаты, отбрасывая контекст, радикально влияющий на смысл, и удивляться, да? Разумеется "не надо делать" относилось к копированию всех аргументов за один вызов.
> зачем? зачем извращаться?
Какая разница, это уже не наше дело. Раз кому-то надо, значит надо.
А вообще, для корректной копируемости всех параметров одним memcpy (а то и вовсе передачей по ссылке) есть наикардинальнейшее решение:
struct MyFuncParameters { T1 p1; T2 p2; ... }; void MyFunc (MyFuncParameters p) { ... };
Помимо решения основной проблемы, даёт и массу иных профитов.
Sbtrn. Devil
По ходу, MyFuncParametrs все равно надо будет лепить 16 присваиваний.
Тема в архиве.