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

前端之家收集整理的这篇文章主要介绍了c – 验证变量参数是预期类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个函数,它将采用可变数量的参数.我将参数的数量传递给函数,然后遍历参数列表.

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

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

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

在此先感谢您的帮助

解决方法

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

至于你的具体想法:

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

猜你在找的C&C++相关文章