lii*_*ght 0 c++ parameters macos arguments 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错误吗?或者上面的代码中是否有一些未定义的标准?
TextureMeta(string tex_, int args_, const char* ...)
Run Code Online (Sandbox Code Playgroud)
这是简称
TextureMeta(string tex_, int args_, const char*, ...)
Run Code Online (Sandbox Code Playgroud)
这意味着您在椭圆之前有 3 个常规参数。你想要的是:
TextureMeta(string tex_, int args_, ...)
Run Code Online (Sandbox Code Playgroud)