1

我一直在包装一个 gl 文件,但它在标题scheme中失败了两次。gl.h我在 OSx 上,所以它可能依赖于平台,但我在生活中的其他任何地方都没有见过这种语法。

typedef void (* glMultiDrawElementsProcPtr) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount);

注意const GLvoid* const *indices. 方案 C 解释器有一个小的 C 子集,不理解标头的这一部分。

这是什么意思,我怎样才能安全地用别的东西代替它......我把它改成了

const GLvoid** indices

4

2 回答 2

2

C 和 C++ 中的类型是从右到左读取的,但大多数人坚持将其const放在错误的一侧。一旦您const

const GLvoid* const*

GLvoid const* const*

读取类型变得微不足道:它是指向类型对象的指针的const指针(您可能实际上不能拥有类型的对象,但它是任何对象的占位符)。您还可以拥有内部指针可修改和/或对象可修改的组合,具体取决于您省略的内容。constGLvoidGLvoidconst

于 2013-09-24T04:34:54.330 回答
0

这意味着 thatindices是指向 a 的指针const GLvoid * const

上面的数据类型也可以写成GLvoid const * const. 这告诉我们,指针指向的数据GLvoid*和指针本身都不能被修改。

本身没有这样的限制indices。您可以修改指向GLvoid*.

于 2013-09-24T04:31:50.003 回答