我只有一个可变参数列表(没有支持/固定参数)以下功能。是否有可能传递给这个函数的值?我正在使用ANSI格式。如何从变量参数列表中获取数据?
Foo(...)
{
}
为了清楚起见,添加了一些要点。在我的特殊情况下,参数的数量及其类型以.xml文件的形式存储为可从Foo()访问的配置。
编辑:
我加入从我的试验和错误的信息。我部分成功地从列表中获取数据,如下所示。
va_list Arguments;
Arguments = ((va_list) &Arguments + Offset);
Data = va_arg(Arguments, Type);
想法我放在这背后是直接从堆栈读取数据。这里的问题因素是Offset其值根据我传递给Foo()的参数数量而变化。例如,当我仅传递一个指针时,我将其值设为16以获得正确的结果。我通过试验和错误发现了这个值。我想从参数列表中推导出偏移量,我的程序可以在所有可能的情况下运行时没有运行故障。有人能告诉我这个偏移和参数列表之间的关系。
我正在使用Visual Studio 2008进行开发。
谢谢;其实我不是在寻找能够通过的东西,因为我应该通过一些东西。我正在试图解决它而不添加任何冗余或虚拟信息。 – Vadakkumpadath 2009-10-10 15:44:56
如果你的函数需要一些全局数据(比如一个xml引用),那么使用它会有意义(这不会是多余的,但会提高(较低))程序内的耦合度。 – Adriaan 2009-10-12 13:35:20