我正在努力编译一些开源库,然后我遇到了这个:
GLfloat campos[3] = {0.0 + modelview[2], 0.0 + modelview[6], 0.0 + modelview[10]};
这在 CentOS 上编译得很好,使用 gcc,我真的很期待它。
但是,在 Mac 上,使用带有 llvm 的 XCode,它不会编译,我不得不将其更改为:
GLfloat campos[3] = static_cast<GLfloat>(0.0 + modelview[2]), static_cast<GLfloat>(0.0 + modelview[6]), static_cast<GLfloat>(0.0 + modelview[10]);
然后它起作用了。作为参考,modelview 是另一个 GLFloat,如下所示:
GLfloat modelview[16];
由于modelview是一个GLFloat,static_cast被应用于一个GLfloat的float总和的结果,但我确实希望免费得到这个。
为什么行为不同?