一、难题叙述
才刚在展开STM32合作开发时看见录于十分让人不认知的标识符,接着我去查了呵呵,辨认出十分有意思,在这撷取给他们一同自学。
标识符如图1右图,当中记号序号的边楼是难题标识符。假如你也不认知,所以接下去就让我来详尽的给他们如是说呵呵。
图1.难题标识符
二、如是说
拉沙泰格赖厄县句子中1、3只不过是C国际标准库里头的宏表达式,2是C库表达式,它的技术国际标准文件格式如下表所示右图:
1、void va_start(va_list ap, last_arg)
促进作用是调用ap表达式,它要va_arg和va_end宏协力采用。last_arg是最终两个传达给表达式的未知的一般来说模块,是图中第44行第一行以后的模块“fmt”。
那个宏要在采用va_arg和va_end以后被调用。
2、int vsprintf(char *str, const char *format, va_list arg)
采用模块条目推送序列化输入到数组
3、void va_end(va_list ap)
容许采用了 va_start 宏的暗含气门模块的表达式回到。假如他们在回到以后在表达式里没调用 va_end,所以就会再次出现enum的结论。
是不是已经蒙了???没关系,上面的都不重要,给你个例子立马明白。
#include#includechar buf[80];int func_print(char *format, …)va_list aptr;int ret;va_start(aptr, format);ret = vsprintf(buf, format, aptr);va_end(aptr);return(ret);int main()int i = 5;float f = 27.0;char s[50] = “haha”;func_print(“%d %f %s”, i, f, s);printf(“%s\n”, buf);return(0);
找个在线C编译器试呵呵,结论如图2
图2
输入结论为:5 27.000000 haha