小编lii*_*ght的帖子

va_arg 以 mac 上的第二个参数开头(clang++)

编码

TextureMeta(string tex_, int args_, const char* ...)
{
    va_list vl;
    va_start(vl, args_);
    for (int i = 0; i < args_; i++)
    {
        string img_(va_arg(vl, char*));
        cout << img_ << endl;
        images.push_back(img_);
    }
    va_end(vl);
}
Run Code Online (Sandbox Code Playgroud)

在 MSVC 上它工作正常,但在 MacOS 上生成的应用程序出现分段错误,我可以看到代码首先打印第二个参数,日志TextureMeta(this=0x000000010174d680, tex_="resource/skybox/mitsuumi", args_=6, (null)="resource/skybox/mitsuumi/right.jpg")显示,第一个 va 参数似乎成为函数参数并且无法迭代。我使用 CMake,生成器是默认的。

这是一个mac clang错误吗?或者上面的代码中是否有一些未定义的标准?

c++ parameters macos arguments clang

0
推荐指数
1
解决办法
49
查看次数

标签 统计

arguments ×1

c++ ×1

clang ×1

macos ×1

parameters ×1