C语言可变参数的使用方法
头文件:
#include <stdarg.h>
首先定义一个可变参数类型的变量,该变量充当迭代器的作用:
va_list it;
可变参数开始:
va_start(arg1, arg2);
参数说明:
- arg1:va_list类型的变量(迭代器)
- arg2:函数的最后一个固定参数,例如函数fun(int a, int b, …),那么最后一个固定参数就是b
取出可变参数中的变量:
va_arg(arg1, arg2);
参数说明:
- arg1:va_list类型的变量(迭代器)
- arg2:变量的类型
结束:
va_end(arg);
参数说明:
- arg:va_list类型的变量(迭代器)
下面提供一个例程:
嵌入式典型应用:
void myprintf(const void* msg, ...)
{
static char fmt[256];
va_list ap;
va_start(ap, msg);
vsprintf(fmt, (char *)msg, ap);
va_end(ap);
HAL_UART_Transmit(&huart1, (uint8_t *)fmt, strlen(fmt), 100);
}