c - 从 C 中具有结构参数的 varad 函数获取 var args
问题描述
我有这个示例代码,我在其中传递了 count 中的参数数量,然后是不同的类型参数。
struct my_struct;
my_func(int count, char* input_1, my_struct input_2, my_struct input_3);
my_func(int count, char* input_1, my_struct input_2);
如何检索参数?我知道使用 va_arg 给出了主要数据类型的参数,但结构不接受。
解决方案
将非 POD 类型作为可变参数传递是不可移植的。我相信它会在 MSVC 中工作(带有警告),而 clang 会完全拒绝编译它。在其他情况下,它可能会编译(希望带有警告),但不会以您期望的方式执行。
您可以改为在函数中将可变参数作为指针传递:
// Get copy
my_struct input = *va_arg( vl, my_struct* ) ;
或者
// Get reference
my_struct* input = va_arg( vl, my_struct* ) ;
调用可能如下所示:
my_struct a ;
my_struct b ;
...
my_func( 2, str, &a, &b ) ;
推荐阅读
- javascript - 如何在 javscript/node 中导入对象
- python - Python 如何处理子包?
- vba - 选择单元格时创建文件夹和子文件夹
- vue.js - 你如何在 firebase 服务工作者和 Vue/Vuex 网络应用程序之间进行通信
- xamarin - 如何在 Xamarin.iOS 中使用 Google 的人员 API?
- python - 为什么“5 in range(5,6) in [range(5,6)]”返回True?
- java - java rest 调用获取 url net::ERR_FAILED
- php - 在 PHP 中删除和创建 MySQL 视图不起作用
- python - 如何在while循环中做elif
- java - 如何使用 androidx.recyclerview.selection 选择 Recyclerview 中列出的所有项目?