variadic相关内容

使用Python单击命令调用带有可变参数的类方法

我有一个使用以前未知数量的参数进行初始化的类,我希望使用Python的click包在CLI上完成初始化。我的问题是我无法将其初始化并运行click命令: $ python mycode.py arg1 arg2 ... argN click_command 设置定义数量的参数(如nargs=5)可以解决缺少命令的问题,但我必须在命令之前输入5个参数。使用像nargs=-1这样的可变参数, ..
发布时间:2022-02-26 23:31:23 Python

在 C 中转发可变参数函数的调用

在 C 中,是否可以转发可变参数函数的调用?如, int my_printf(char *fmt, ...) {fprintf(stderr, "用 fmt %s 调用 printf", fmt);返回 SOMEHOW_INVOKE_LIBC_PRINTF;} 在这种情况下,以上述方式转发调用显然不是绝对必要的(因为您可以以其他方式记录调用,或使用 vfprintf),但我正在处理的代码库需要 ..
发布时间:2022-01-31 09:55:56 其他开发

是否可以为由所有实现该特征的类型组成的任何元组自动实现特征?

假设我有一个 特质快乐{} 我可以为我想要的任何结构实现 Happy,例如: 结构狗;结构猫;结构鳄鱼;impl Happy for Dog {}impl Happy for Cat {}impl Happy for Alligator {} 现在,我想自动 impl 我的 Happy 特征,用于由所有实现 Happy 特征的类型组成的任何元组.直观地说,所有快乐的元组也是快乐的. ..
发布时间:2022-01-20 00:10:07 其他开发

在无法识别的编译器上吞下可变参数宏中的逗号 ##

我需要在 C 中编写一个可变参数宏,它必须接受零个或多个参数. 在 gcc 中,可以通过在逗号后添加“##"来实现,例如,##____VA_ARGS____ 在具有零参数的可变参数宏. 但是,我的构建系统中的编译器(超出我的控制)不理解 ,## 语法,因此不会吞下逗号. 有什么我可以使用的解决方法吗? 谢谢! 解决方案 是的,gcc 吞下逗号是非标准的,你不应该依赖 ..
发布时间:2022-01-11 19:41:15 其他开发

从 C++ 宏创建字符串列表和枚举列表

为了使我的代码更短更容易更改,我想替换类似的东西 枚举{ E_AAA, E_BBB, E_CCC };静态 const char *strings{"AAA", "BBB", "CCC" }; 使用宏,例如 INIT(AAA, BBB, CCC);但是当我尝试使用可变参数和字符串化做一个宏时,我得到一个错误,因为没有声明参数. 你知道怎么做吗? 解决方案 这是我前几天学到的一个解 ..
发布时间:2022-01-11 19:32:25 C/C++开发

计算参数数量的宏

我有一个来自第三方 C 库的可变参数函数: int func(int argc, ...); argc 表示传递的可选参数的数量.正如建议的那样,我用一个计算参数数量的宏包装它 这里.为了阅读方便,这里是宏: #define PP_ARG_N(\_1、_2、_3、_4、_5、_6、_7、_8、_9、_10、\_11、_12、_13、_14、_15、_16、_17、_18、_19、_20、\_ ..
发布时间:2022-01-11 19:22:48 其他开发

为什么要使用 params 关键字?

我知道这是一个基本问题,但我找不到答案. 为什么要使用它?如果你编写了一个函数或一个使用它的方法,当你删除它时,代码仍然可以完美地工作,100% 没有它.例如: 带参数: static public int addTwoEach(params int[] args){整数总和 = 0;foreach(args 中的 var 项)总和 += 项目 + 2;返还金额;} 无参数: s ..
发布时间:2021-12-29 19:32:18 C#/.NET

vararg 函数如何找出机器代码中的参数数量?

像 printf 这样的可变参数函数如何找出它们得到的参数数量? 参数的数量显然不是作为(隐藏的)参数传递的(参见 在此处的 asm 示例中调用 printf). 有什么诀窍? 解决方案 诀窍在于你以其他方式告诉他们.对于 printf,您必须提供一个格式字符串,其中甚至包含类型信息(尽管这可能不正确).提供此信息的方式主要是用户合同,而且通常容易出错. 至于调用约定:通 ..
发布时间:2021-12-18 09:22:05 其他开发

可变组合函数?

我正在尝试编写一个可变参数函数组合函数.这基本上是 (.) ,除了第二个参数函数是可变参数.这应该允许以下表达式: map even .zipWith (+) 或者只是 map even .压缩包 目前,如果我添加 IncoherentInstances 并且需要第一个参数函数的非多态实例,我所达到的效果. {-# LANGUAGE FlexibleInstances, Overlapp ..
发布时间:2021-12-14 12:38:29 其他开发

是否可以在可变参数宏中迭代参数?

我想知道是否可以迭代传递给 C99 中的可变参数宏的参数或使用任何 GCC 扩展? 例如是否可以编写一个通用宏,将结构及其字段作为参数传递并打印结构中每个字段的偏移量? 像这样: 结构一个{一个;国际b;国际 c;};/* PRN_STRUCT_OFFSETS 将打印每个字段的偏移量作为第一个参数传递的结构内.*/int main(int argc, char *argv[]){PR ..
发布时间:2021-12-02 08:12:02 其他开发

如何制作可变参数宏(可变数量的参数)

我想用 C 写一个宏,它可以接受任意数量的参数,而不是一个特定的数字 示例: #define macro( X ) something_complicated(whatever( X ) ) 其中 X 是任意数量的参数 我需要这个,因为 whatever 被重载并且可以用 2 或 4 个参数调用. 我尝试定义了两次宏,但第二个定义覆盖了第一个! 我正在使用的编译器是 g ..
发布时间:2021-12-02 08:07:45 其他开发

在 C 中转发对可变参数函数的调用

在 C 中,是否可以转发可变参数函数的调用?如, int my_printf(char *fmt, ...) {fprintf(stderr, "用 fmt %s 调用 printf", fmt);返回 SOMEHOW_INVOKE_LIBC_PRINTF;} 在这种情况下,以上述方式转发调用显然不是绝对必要的(因为您可以以其他方式记录调用,或使用 vfprintf),但我正在处理的代码库需要 ..
发布时间:2021-12-02 00:06:10 其他开发

编写自己的函数时如何使用 R 的省略号功能?

R 语言有一个很好的特性,用于定义可以接受可变数量参数的函数.例如,函数 data.frame 接受任意数量的参数,每个参数成为结果数据表中某一列的数据.示例用法: >data.frame(letters=c(“a", “b", “c"), numbers=c(1,2,3), notes=c(“do", “re", ";mi"))字母数字笔记1 1 做2 b 2 re3 厘米 3 英里 函数的 ..
发布时间:2021-12-01 20:33:02 其他开发

可变参数 C 函数打印多个二维字符数组

我需要在 C 中设置一个可变参数函数来并排打印可变数量的二维字符数组.我很难弄清楚如何使用 va_arg() 初始化 boards 变量. 关键的问题行是:boards[i] = va_arg(ap, char*[][BOARDSIZE]); 该行产生一个编译器错误(目前,第二个参数给'va_arg' 是不完整的类型 'char *[][10]'),但基本上我确定我没有做正确的事情.我只是不 ..
发布时间:2021-11-24 22:09:10 C#

有没有办法在可变参数宏参数上使用 C++ 预处理器字符串化?

我猜这个问题的答案是否定的,但如果有办法就太好了.为了澄清,假设我有以下宏: #define MY_VARIADIC_MACRO(X...)//在宏定义中做一些事情 我想做的是在将 X 的所有变量传递给可变参数函数之前以某种方式对其进行字符串化;这里的关键字是之前.我意识到无法从宏定义中真正访问各个参数,但是有没有办法将所有参数字符串化,可能类似于以下内容? #define MY_VARIA ..
发布时间:2021-11-17 05:09:00 C/C++开发