我一直在为 scheme
包装一个 gl 文件,但它在 gl.h
header 中失败了两次。我使用的是 OSx,因此它可能依赖于平台,但我在生活中的其他地方从未见过这种语法。
typedef void (* glMultiDrawElementsProcPtr) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount);
注意const GLvoid* const *indices
。方案 C 解释器有一个小的 C 子集,并且不理解 header 的这一部分。
这是什么意思以及如何安全地用其他东西替换它......我将其更改为
const GLvoid** 索引
最佳答案
C 和 C++ 中的类型是从右向左读取的,但大多数人坚持将 const
放在错误的一侧。修复了 const
位置后
const GLvoid* const*
至
GLvoid const* const*
读取类型变得很简单:它是一个指向 const
的指针,指向 GLvoid
类型的 const
对象(您可能不能真正拥有 GLvoid 类型的对象,但它是任何对象的占位符)。您还可以拥有内部指针可修改和/或对象可修改的组合,具体取决于您省略的 const
。
关于c++ - C/C++签名中两个const的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972943/