微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 验证变量参数是预期类型

我正在编写一个函数,它将采用可变数量的参数.我将参数的数量传递给函数,然后遍历参数列表.

每个传递的参数都应该是一个整数.我将把这个整数添加一个整数向量中,稍后将使用它.

我想确保一些小丑不会尝试将此函数传递给将来的整数.我认识到我可以检查来自va_arg的当前参数以确保它不是NULL并且我可以使用类似isanum(va_arg())来确定它是否是有效整数.我想我甚至可以检查sizeof(va_arg)并将其与sizeof(int)进行比较并确保它们相等.

是否有任何其他检查我可以运行以验证我已经传递了一个有效的整数?

在此先感谢您的帮助

解决方法

没有明智的方法可以做到这一点.变量参数函数通过将参数的所有原始二进制表示连接到堆栈上的一大块数据来工作.所以它依赖于调用者和被调用者同意参数的数量和类型(否则你最终会读取一个int,好像它是一个浮点数).

至于你的具体想法:

> va_arg()是一个宏,它简单地将原始堆栈数据的一些字节数解释为您指定的任何类型.因此,在其上调用sizeof()只会告诉您所要求的数据类型的大小.>通常,没有形成无效整数的原始二进制数据模式.所以假设的isanum()不起作用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐