说一下这个基础知识 | 每日一练(138)

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

读者:怎样实现一个可变参数函数, 它把参数再传给另一个可变参数函数?

小林:通常来说, 你做不到。理想情况下, 你应该提供另一个版本的函数, 这个函数接受 va list 指针类型的参数。类似于 vfprintf()。如果所有的参数必须完整的传给另一个函数, 或者你不能重写另一个函数为一个接受 va list 指针类型参数的函数, 这并没有一个可移植的解决方法。也许可以通过求助于机器的

汇编语言来实现。

读者:怎样调用一个参数在执行是才建立的函数?

小林:这没有一个保证工作或可移植的方法。也许你可以试着传一个无值型指针 (void *) 数组, 而不是一个参数序列。被调用函数遍历这个数组, 就象 main() 遍历 argv 一样。当然这一切都建立在你能控制所有的调用函数上。

正文完