面板类型 va_list定义的是什么类型?
浏览量:2455
时间:2021-03-14 10:11:52
作者:admin
va_list定义的是什么类型?
C语言参数从右到左进入堆栈。堆栈从高地址增长到低地址。因此,在堆栈空间中,参数的排列非常有序和规则。从第一个参数开始,它们根据参数的大小紧密排列。在读取可变参数时,一般来说,必须至少有一个不可变参数。取最后一个不可变参数的地址,并将其相加。参数的大小是下一个变量参数的起始地址。然后根据参数的类型添加相应的位移,依次取出这些参数。这就是变参数原理。类似list的va_uu宏实际上也做同样的事情。因此,如果您想用自定义变量参数调用vprintf,您可以自己分配一个空间,然后用要传入的变量参数填充该空间,最后将该空间的地址转换为VA,然后将列表传递给vprintf。在大多数架构中,VA_uList是一种简单的指针类型。
使用VA_u2; XXX的宏也应该正常。虽然不能保证它可以用在其他奇怪的体系结构中,但这仍然是一句话。为什么不?在正常情况下,最好为每个参数调用printf一次
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。
下一篇
数据库方案 数据库怎么优化