va_arg
来检索函数中的下一个参数。它适用于所有类型(包括char *),但char:void test1(char t,...) {
va_list args;
va_start(args, t);
if(t=='c') Serial.println(va_arg(args, char));
else if(t=='n') Serial.println(va_arg(args, int));
va_end(args);
}
测试:
int n = 42; char c = '?'; test1('n', n); // prints 42 test1('c', c); // prints nothing!
您可以验证/解释吗?该代码在9600波特的Arduino Uno上运行。
int
的参数在传递给可变参数函数之前被提升为int
,因此此类函数应检索为int
类型的参数。