标准库标头 <cstdarg>

来自cppreference.com
< cpp‎ | header


 
 
标准库头
通用工具
<any> (C++17)
<bitset>
<bit> (C++20)
<charconv> (C++17)
<expected> (C++23)
<format> (C++20)
<functional>
<optional> (C++17)
<stdbit.h> (C++26)
<tuple> (C++11)
<typeindex> (C++11)
<utility>
<variant> (C++17)
容器
<array> (C++11)
<deque>
<flat_map> (C++23)
<flat_set> (C++23)
<forward_list> (C++11)
<hive> (C++26)
<inplace_vector> (C++26)   
<list>
<map>
<mdspan> (C++23)
<queue>
<set>
<span> (C++20)
<stack>
<unordered_map> (C++11)
<unordered_set> (C++11)
<vector>
迭代器
<iterator>
范围
<generator> (C++23)
<ranges> (C++20)
 

此标头原作为 <stdarg.h> 存在于 C 标准库。

此头文件提供对 C 风格变参函数的支持,并且“默认实参提升”的 C 定义会替换成对应的 C++ 定义

目录

类型

保有 va_startva_argva_endva_copy 所需的信息
(typedef) [编辑]

启用对可变函数实参的访问
(宏函数) [编辑]
访问下一个可变函数实参
(宏函数) [编辑]
(C++11)
制造可变函数实参的副本
(宏函数) [编辑]
结束对可变函数实参的遍历
(宏函数) [编辑]

[编辑] 概要

namespace std {
  using va_list = /* 见描述 */ ;
}
#define va_arg(V, P) /* 见描述 */
#define va_copy(VDST, VSRC) /* 见描述 */
#define va_end(V) /* 见描述 */
#define va_start(V, P) /* 见描述 */

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
CWG 2645 C++98 C++ 定义了“默认实参提升”,但使用的仍然是它的 C 定义 C++ 定义会覆盖 C 定义