gpt4 book ai didi

c++ - 如何在没有命名参数的情况下将可变数量的参数传递给c++中的函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:29 27 4
gpt4 key购买 nike

我需要编写一个函数,它接受可变数量的参数,它本质上是一个类似 snprintf 的函数的包装器。我了解一般如何执行此操作,如 Passing variable number of arguments around 所示。 .

无论如何,至少在 C 中,我们需要在变量参数开始之前将一个命名参数传递给函数(Why is void f(...) not allowed in C?)。

但是,相同问题的答案表明这在 C++ 中很容易实现。我想知道如何实现这一点,特别是因为处理可变参数函数的方法似乎与 C(va_start 等)相同。或者他们指的是可变参数模板?

所以基本上可以编写一个没有命名参数的可变参数函数,如下所示,如果可以,如何实现?

void f(...){
...
}

附注如果可能的话,我想用 c++03 来做这件事。

最佳答案

虽然 C++ 语言允许编写其参数列表仅由 ... 组成的函数,但该语言无法提供访问用 (...) 声明的函数中的参数的方法> 参数列表。

基本上,C++ 中的此类函数因其在重载决策中的行为而存在(... 参数匹配任何参数类型)。此类函数的主体将无法访问参数。如果您认为这些功能没有用处,请不要使用它们。

此类函数通常在一些众所周知的模板元编程技术中的非执行上下文中使用,在这种情况下甚至不必定义它们 - 仅声明就足够了。

关于c++ - 如何在没有命名参数的情况下将可变数量的参数传递给c++中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13871535/

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