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

标签 c++

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/

相关文章:

c++ - 如何为 Visual Studio 代码设置 boost

c++ - 在 Eigen 中乘以稀疏子矩阵

c++ - 将 key 传递给 Crypto++ 中的 AES 解密

c++ - 运算符重载可以在没有引用的情况下工作吗?

c++ - 具有动态值的哈希表

c++ - 为什么我需要在 constexpr 类中对非静态数组成员进行成员初始化?

c++ - 找不到 boost::async 到底做了什么

c++ - 在 C++ 中表示多遍抽象语法树 (AST)?

c++ - 双右尖括号 (>>) 在特定情况下会产生语法错误

c++ - 未定义对 "***"的引用