说一下C语言 | 每日基础(89)

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

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

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

阿一:这没有一个保证工作或可移植的方法。如果你好奇, 可以问本文的编辑(Steve Summit), 他有一些古怪的点子, 也许你可以试试⋯⋯ 也许你可以试着传一个无值型指针 (void *) 数组, 而不是一个参数序列。被调 用函数遍历这个数组, 就象 main() 遍历 argv 一样。当然这一切都建立在你能控制 所有的调用函数上。

正文完