我有一段代码,最多可以包含8个可变参数。
但是有时候我传递的参数少于8个。
我没有在函数调用中传递参数的数量,而是一个可以解码为字符串格式的参数。
va_arg的手册页显示- “如果没有下一个自变量,或者类型与实际的下一个自变量的类型不兼容(根据默认自变量提升),则将发生随机错误。”
在执行代码期间我没有看到任何错误。
在gdb中,我看到随机垃圾值已分配给我的arg [I]。
那么手册页所指的“随机错误”是什么?
uint64 arg[8];
va_list ap;
va_start(ap, num); // num is not number of args, it is function arg
for(int i = 0; i < 8; i++)
arg[i] = va_arg(ap, uint64);
va_end(ap);