У меня есть va_list, в котором есть одна запись. Запись представляет собой целочисленный «hostObject». Мне нужно добавить второй в этот va_list, который будет указателем на другую функцию, которую я планирую вызывать в более поздний момент времени. Пример кода, как показано ниже:Как добавить указатель на существующий va_list?
va_list adjustVarArgs(tag_t hostObject, ...)
{
va_list adjustedArgs;
// TODO: Somehow make 'adjustedArgs' va_list to contain the hostObject and the function pointer.
return adjustedArgs;
}
int Cfg0VariantConfigSavePost(METHOD_message_t * msg, va_list args)
{
va_list largs;
va_copy(largs, args);
tag_t hostObject = va_arg(largs, tag_t);
va_end(largs);
va_list adjustedArgs = adjustVarArgs(hostObject);
return Fnd0VariantConfigSavePost(msg, adjustedArgs);
return ITK_ok;
}
deleteExprObjects это метод, который я заинтересован в В целом, мне нужно хранить 1. HostObject 2. указатель на функцию:. DeleteExprsCallBack.
Пожалуйста, дайте мне знать, как это можно сделать.
Thanks, Pavan.
Короткий и единственный ответ, что вы не может. «Va_list» - это не что иное, как указатель на стек, что означает, что вы не можете вернуть его из функции, как только функция возвращает аргументы в «списке», на самом деле не существует. –
@JoachimPileborg Это немного сложнее, чем просто указатель на стек в эти дни; см. http://stackoverflow.com/questions/4958384/what-is-the-format-of-the-x86-64-va-list-structure/4958507#4958507 То, что вы делаете, все еще стоит. – Wintermute