[英]Using a custom type with va_arg
mystruct_t v = va_arg(a_list, mystruct_t);
就 C 规范而言,这可以吗(使用大于等于 int 大小的自定义数据类型)?
C 标准中没有关于将结构类型用作可变参数的限制。 所以你想做的是允许的。
唯一不允许作为可变参数的参数类型是那些会进行提升的参数类型,即小于int
的整数类型(signed 或 unsigned char
或short
或等价物)以及float
。
作为参考,关于va_arg
的C 标准第 7.16.1.1p2 节指出:
参数类型应是指定的类型名称,这样指向具有指定类型的对象的指针的类型可以简单地通过在类型后缀
*
来获得。 如果没有实际的下一个参数,或者如果类型与实际的下一个参数的类型不兼容(根据默认参数提升),则行为未定义
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.