15.4 怎样知道实际上有多少个参数传入函数?

这一段信息不可移植。

一些旧系统提供一个非标准函数nargs()。

然而它的可信度值得怀疑, 因为它的典型返回值是参数的字节长度, 而不是参数的个数。

结构、整数和浮点类型的值一般需要几个字节的长度。

任何接收可变参数的函数都应该可以从传入的参数本身来得到参数的数目。

类printf 函数从格式字符串中的格式说明符来确定参数个数, 就象%d 这样的格式说明符。

所以如果格式字符串和参数数目不符时, 此类函数会出错的很厉害。

还有一个常用的技巧, 如果所有的参数是同一个类型, 在参数列最后加一个标记值。

通常用0、-1 或适当类型转换的空指针, 参见问题5.2 和15.4 例子中exec1() 和vstrcat() 的用法。

最后, 如果类型是可预见的, 你可以加一个参数数目的参数。

当然调用者通常是很不喜欢这种做法的。

永不止步步 发表于01-18 09:46 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号