gpt4 book ai didi

c++ - stdarg.h 读取了太多参数

转载 作者:行者123 更新时间:2023-11-30 03:02:58 25 4
gpt4 key购买 nike

void wczytaj(N nazwa, O x1, ...) {
va_list arg;
O x;
...
va_start (arg, x1);
for (x = x1; x; x = va_arg(arg, O)) {
w.punkt.push_back(x);
cout << "DODANO " << x << endl;
}
va_end (arg);
...

我是这样用的

s.wczytaj(n, x1, x2, x3);

其中 n 为“asd”,x1 = 1,x2 = 2,x3 = 3;

在输出上我可以看到

DODANO 1
DODANO 2
DODANO 3
DODANO 1081714496

最佳答案

可变函数参数不是类型安全的,或者说是任何类型的“安全”类型。 有责任向您的函数传达有多少参数以及它们的类型。

在您的代码中,唯一使循环终止的是当 x 计算为 false 时。您的数据,按原样模糊地键入,似乎由整数值组成,这将需要您的最后一个可变参数为零,这在您的示例中不是。

尝试使用 (n, x1, x2, x3, 0) 调用函数。

关于c++ - stdarg.h 读取了太多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9774803/

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