c-遍历va_list的所有参数,而不需要事先知道它由多少个变量参数组成



我的问题是:有没有一种方法可以在不事先知道它由多少个变量参数组成的情况下遍历va_list的所有参数?在网上,我发现了一些例子,其中椭圆的参数数量被作为第一个参数传递,因此,使用for循环,很容易导航元素。我希望我的功能是隐含的。

有没有一种方法可以在不事先知道它由多少个变量参数组成的情况下遍历va_list的所有参数?

不,没有。参数的计数(和类型(必须是已知的,要么使用sentinel值,要么传递变量,要么让参数的计数取决于其他参数(我的意思是,像printf(。关于参数计数的信息不会存储在任何地方——如果你的算法需要这些信息,你必须自己传递。

您可以编写宏来重载多个参数,并将参数计数作为参数传递。或者,对于sentinel方法,您也可以编写一个将传递NULL的宏,如果您使用的是gcc,则有一个gccattribute(sentinel)函数属性,该属性将生成sentinelNULL丢失的警告。

相关内容

  • 没有找到相关文章

最新更新