【发布时间】:2013-07-02 07:29:29
【问题描述】:
我有一个函数,它接收一个函数指针和一个 XML 字符串,其中包含函数的定义和每个参数的参数:
void CallFunction( void * pFuncion, std::string xmlFuncionDef)
{
}
在上述函数内部,xmlFunctionDef 包含了pFunction 指向的函数的定义。例如,数字参数,每个参数的类型和参数:
<Function ParamCount="3" ReturnType="int">
<Params>
<Param type="int" DefaultValue="None" PassBy="Value"/>
<Param type="double" DefaultValue="None" PassBy="Referenc"/>
<Param type="char*" DefaultValue="None" PassBy="Pointer"/>
</Params>
<Arguments>
<Arg Value="3" />
<Arg Value="29.5" />
<Arg Value="Hello World" />
</Arguments>
</Function>
现在我该如何调用这个函数?我应该为此使用_asm 吗?
任何帮助将不胜感激。
【问题讨论】:
-
你的意思是
void CallFunction( void (*pFuncion)(void), std::string xmlFuncionDef)吗? -
您询问“如何调用该函数”。但是第一部分已经不清楚了:你如何接收指向那个函数的指针?
void * pFuncion是 void 类型的指针,这不是指向函数的指针。 -
如果您的代码应该在特定架构上运行,那么您可以使用内联汇编并将参数压入堆栈,然后调用该函数。但是你的函数负责以正确的顺序从堆栈中取出参数。无论如何,您的问题没有明确定义。更具体一些并展示一些示例。
-
似乎您正在尝试发明 COM、SOAP Web 服务或类似的架构。这是一项相当大的任务。