这里主要说明的是使用va_arg,va_start,va_end宏得到的不定参数。
主要坑爹的地方在于,va_arg这个宏的第二个参数——取出的数值类型,必须是int或者double,而不能是float,char等。如果你在调用函数的时候,char,unsigned char等实数会转化为int,而float会转化为double:
| |
这里如果第7行改成va_args(args, float)会得到乱七八糟的数据。
还有一个坑爹的地方在于,如果你的参数像上面一样使用的是double,那么:
| |
这种调用是错的,你必须明确指出你给的参数是浮点数(只需要至少给出一个即可):
| |