Questions tagged «variadic»

10
为什么要使用params关键字?
我知道这是一个基本问题,但我找不到答案。 为什么要使用它?如果编写使用该函数的方法或方法,则将其删除时,代码仍将完美运行,没有代码的情况下将100%正常运行。例如: 有参数: static public int addTwoEach(params int[] args) { int sum = 0; foreach (var item in args) sum += item + 2; return sum; } 没有参数: static public int addTwoEach(int[] args) { int sum = 0; foreach (var item in args) sum += item + 2; return sum; …

5
如何制作可变参数宏(可变数量的参数)
我想用C编写一个宏,它接受任意数量的参数,而不是特定数量的参数 例: #define macro( X ) something_complicated( whatever( X ) ) X参数的数目在哪里 我需要这个,因为它whatever已重载,可以使用2或4个参数调用。 我尝试两次定义宏,但是第二个定义覆盖了第一个! 我正在使用的编译器是g ++(更具体地说,是mingw)

12
转发C中可变参数函数的调用
在C语言中,是否可以转发可变函数的调用?如 int my_printf(char *fmt, ...) { fprintf(stderr, "Calling printf with fmt %s", fmt); return SOMEHOW_INVOKE_LIBC_PRINTF; } 在这种情况下,显然不必严格按照上述方式转发调用(因为您可以通过其他方式记录调用或使用vfprintf),但是我正在使用的代码库要求包装程序执行一些实际的工作,并且没有(也没有增加)类似于vfprintf的辅助函数。 [更新:根据到目前为止提供的答案,似乎有些困惑。为了那句问题的另一种方式:在一般情况下,你可以用一些任意可变参数函数,而无需修改函数的定义。]
189 c  variadic 

5
编写自己的函数时如何使用R的省略号功能?
R语言具有定义功能的漂亮功能,这些功能可以使用可变数量的参数。例如,该函数data.frame接受任意数量的参数,并且每个参数成为结果数据表中列的数据。用法示例: > data.frame(letters=c("a", "b", "c"), numbers=c(1,2,3), notes=c("do", "re", "mi")) letters numbers notes 1 a 1 do 2 b 2 re 3 c 3 mi 该函数的签名包括省略号,如下所示: function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, stringsAsFactors = default.stringsAsFactors()) { [FUNCTION DEFINITION HERE] } 我想编写一个执行类似操作的函数,将多个值合并到单个返回值中(以及进行其他处理)。为了做到这一点,我需要弄清楚如何...从函数内的函数参数中“解包” 。我不知道该怎么做。函数定义中的相关行data.frame是object <- as.list(substitute(list(...)))[-1L],我对此毫无意义。 那么,如何将功能签名中的省略号转换为列表? 更具体地说,如何get_list_from_ellipsis在下面的代码中编写? …

9
是否可以遍历可变参数宏中的参数?
我想知道是否有可能遍历传递给C99中可变参数宏的参数或使用任何GCC扩展? 例如,是否可以编写一个通用宏,该宏将结构及其字段作为参数传递并打印结构中每个字段的偏移量? 像这样: 构造一个{ 诠释 int b; int c; }; / * PRN_STRUCT_OFFSETS将打印每个字段的偏移量 内部结构作为第一个参数传递。 * / int main(int argc,char * argv []) { PRN_STRUCT_OFFSETS(结构a,a,b,c); 返回0; }

4
用C和C ++调用的(…)是什么?
的用途之一...是表示可变参数 C和C ++中的实体。 它叫什么名字? 以这种方式使用时,它被归类为运算符还是其他? 还有其他细节...吗? 编辑: 我知道的目的...。我在问它的​​名称和分类,我希望它在C和C ++中都相似。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.