c - char 的 va_arg 故障
问题描述
我尝试使用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
,因此此类函数应将参数检索为 type int
。
推荐阅读
- python - 无法将数组参数传递给线程
- google-apps-script - 删除 gmail 中的所有 gmail 促销
- arrays - Mule - XML 数组只读取一个元素
- css - 在 SCSS 上使用 webkit
- c++ - 在 Windows Server 2012 上运行 VS2019 编译的应用程序需要什么?
- python - 蟒蛇,硒 | 如何处理范围滑块
- c - 这段代码是如何工作的?我如何得到这个输出?
- c++ - “考特<
cout<<count<<endl;
灵魂会根据条件提供输出,但它没有打印任何东西,导致这种结果的代码中的故障/错误/缺陷是什么?这是我的第一个问题,如果我不能完全理解,对不起。我使用了以下代码,我无法理解这里发生了什么。这是一个简单的输入输出问题。输出为我们提供了有关匹配两个团队
- java - spring 批处理使用两个不同的数据库
- python - FilePath 宏不包含 Pycharm 中的值