gpt4 book ai didi

c++ - 如何将函数指针添加到现有的 va_list?

转载 作者:太空狗 更新时间:2023-10-29 23:02:04 26 4
gpt4 key购买 nike

我有一个 va_list,其中只有一个条目。该条目是一个整数“hostObject”。我需要向这个 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.主机对象2. 函数指针:deleteExprsCallBack。

请告诉我如何做到这一点。

谢谢,帕万。

最佳答案

根据 C 标准 (7.16),在 va_list 上运行的可用宏的完整列表是:

The type declared is
va_list
which is a complete object type suitable for holding information needed by the macros va_start, va_arg, va_end, and va_copy.

这 4 个都不能向 va_list 添加元素,所以这是不可能的。

但自此 C++ 以来,如果您使用的是 C++11,则可以采用可变参数包并将其与附加的函数指针一起转发:

template <typename... Args>
int Cfg0VariantConfigSavePost( METHOD_message_t * msg, tag_t hostObject, Args&&... args)
{
return Fnd0VariantConfigSavePost(msg,
some_func_ptr,
hostObject,
std::forward<Args>(args)...);
}

关于c++ - 如何将函数指针添加到现有的 va_list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29746188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com