va_arg出现小故障

问题描述 投票:0回答:1
我尝试使用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上运行。
c variables parameter-passing
1个回答
2
投票
小于int的参数在传递给可变参数函数之前被提升为int,因此此类函数应检索为int类型的参数。
© www.soinside.com 2019 - 2024. All rights reserved.