这一段信息不可移植。 一些旧系统提供一个非标准函数 nargs()。 然而它的可信度值得怀疑, 因为它的典型返回值是参数的字节长度, 而不是参数 的个数。结构、整数和浮点类型的值一般需要几个字节的长度。 任何接收可变参数的函数都应该可以从传入的参数本身来得到参数的数目。 类 printf 函数从格式字符串中的格式说明符来 确定参数个数, 就象 %d 这样的格式说明符。所以如果格式字符串和参数数目不符时, 此类函数会出错的很厉害。
还有一个常用的技巧, 如果所有的参数是同一个类型, 在参数列最后加一个标 记值。 通常用 0、-1 或适当类型转换的空指针, 参见问题 5.2 和 15.4 例子中 exec1() 和 vstrcat() 的用法。
最后, 如果类型是可预见的, 你可以加一个参数数目的参数。当然调用者通常是 很不喜欢这种做法的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。