文件名称:va_start & va_arg.vsdx
文件大小:22KB
文件格式:VSDX
更新时间:2023-12-29 10:23:49
串口通信 uart
① va_start宏中,通过&(A)取得的就是形参fmt变量的地址,在示例中就是栈中的0x100地址 然后在该地址的基础上,就可以计算出可变参数的起始位置,也就是0x104地址 ② va_arg宏则是根据可变参数的类型,逐个遍历可变参数,此时需要格式字符串标识的类型与实际可变参数的类型一致,否则会解析错误 ③ 由于va_start & va_arg的运行过程高度依赖参数入栈的顺序(只有函数参数是从右向左入栈时,根据"sdc"字符串的解析才是正确的),这就体现了对编译器设置入栈规范的重要性。