相关疑难解决方法(0)

C++预处理器__VA_ARGS__参数个数

简单的问题,我无法在网上找到答案.在可变参数宏中,如何查找参数的数量?如果它有解决方案,我可以使用boost预处理器.

如果它有所不同,我试图转换可变数量的宏参数来增强预处理器序列,列表或数组以进行进一步的重新处理.

c c++ c-preprocessor variadic-macros

90
推荐指数
8
解决办法
10万
查看次数

函数声明中的最大参数数

我知道函数定义中的最小参数数量为零,但函数定义中的最大参数数量是多少?我只是为了知识和好奇而问这个问题,而不是我要写一个真正的功能.

c c++ limits function-parameter function-declaration

27
推荐指数
3
解决办法
3万
查看次数

是否可以在C中具有可变参数函数且没有非可变参数?

我有以下功能:

void doStuff(int unusedParameter, ...)
{
    va_list params;
    va_start(params, unusedParameter);
    /* ... */
    va_end(params);
}
Run Code Online (Sandbox Code Playgroud)

作为重构的一部分,我想删除未使用的参数,而不另行更改函数的实现.据我所知,va_start当你没有最后一个非变量参数引用时,就不可能使用它.有没有办法解决?

背景:它实际上是一个C++程序,所以我可以使用这里建议的一些运算符重载魔法,但我希望此时不必更改接口.

现有函数通过要求变量参数列表以空值终止并扫描NULL来完成其工作,因此它不需要一个前导参数来告诉它有多少参数.

在回应评论:我不具备删除未使用的参数,但我会做到这一点,如果有一个干净的方式来做到这一点.我希望有一些我想念的简单.

c variadic-functions

16
推荐指数
2
解决办法
2694
查看次数

C中的变量参数,如何获取泛型类型的值?

我正在尝试使用带有泛型类型的C stdarg.h lib.int类型,是我的泛型类型>要理解它,请继续阅读.所以,我的问题是:

我有一个函数接受可变数量的参数.喜欢

void function (int paramN, ...);
Run Code Online (Sandbox Code Playgroud)

在我的程序中,没有办法知道,哪个是变量参数的类型,它可以是char,数组,int,short,函数点等...就像

function (paramN, "Hey, I'm a string", 1, function_pint, array, -1); // -1 is a sentinel.
Run Code Online (Sandbox Code Playgroud)

所以,我认为,一个int,是32位,在x86(32位)系统中,这将保存所有内存地址.所以,如果我用int得到所有参数,那就不会有问题了,例如,"嘿,我是一个字符串"这个字符串的地址,通常适合32位变量,所以,我只需要制作演员.

我是正确的?
我可以做吗?
注意:我不想让我的函数像printf(这个解决方案,在这种情况下不适合好吗?)

谢谢你的回答.
抱歉我的英语不好.

c variadic-functions

12
推荐指数
2
解决办法
1万
查看次数

用于计算参数数量的宏

我有来自第三方C库的可变参数函数:

int func(int argc, ...);
Run Code Online (Sandbox Code Playgroud)

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, \
         _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \
         _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \
         _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \
         _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \
         _61, _62, …
Run Code Online (Sandbox Code Playgroud)

c macros arguments variadic

9
推荐指数
1
解决办法
9290
查看次数

va_list 中传递的参数数量

全部,

我想the number of passed parameters在 va_list 中进行控制。

va_list args;
va_start(args, fmts);
        vfprintf(stdout, fmts, args);
va_end(args);
Run Code Online (Sandbox Code Playgroud)

是否有可能获取 a 之后的参数数量va_start

c variadic-functions

4
推荐指数
1
解决办法
6254
查看次数