gpt4 book ai didi

c++ - 使用变量列表参数时 va_list 的长度?

转载 作者:IT老高 更新时间:2023-10-28 12:35:52 35 4
gpt4 key购买 nike

有没有办法计算 va_list 的长度?我看到的所有示例变量参数的数量都是明确给出的。

最佳答案

没有办法计算 va_list 的长度,这就是为什么你需要 printf 之类的函数中的格式字符串。

唯一可用于处理 va_list are 函数 宏:

  • va_start - 开始使用 va_list
  • va_arg - 获取下一个参数
  • va_end - 停止使用 va_list
  • va_copy(自 C++11 和 C99 起)- 复制 va_list

请注意,您需要在同一范围内调用 va_startva_end,这意味着您不能将其包装在调用 va_start 的实用程序类中> 在它的构造函数和 va_end 在它的析构函数中(我被这个咬过一次)。

例如,这个类一文不值:

class arg_list {
va_list vl;
public:
arg_list(const int& n) { va_start(vl, n); }
~arg_list() { va_end(vl); }
int arg() {
return static_cast<int>(va_arg(vl, int));
}
};

GCC 输出 following error

t.cpp: In constructor arg_list::arg_list(const int&):
Line 7: error: va_start used in function with fixed args
compilation terminated due to -Wfatal-errors.

关于c++ - 使用变量列表参数时 va_list 的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2598132/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com