[英]Meaning of two const in C/C++ signature
我一直在包装用于scheme
的gl文件,但在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
C和C ++中的类型是从右到左读取的,除了大多数人坚持将const
放在错误的一边。 一旦固定const
,从位置
const GLvoid* const*
至
GLvoid const* const*
读取类型变得很简单:它是指向const
指针的指针,该const
指针指向GLvoid
类型的const
对象(您可能无法真正拥有GLvoid类型的GLvoid
但它是任何对象的占位符)。 您还可以根据内部省略的const
,使用内部指针可修改和/或对象可修改的组合。
这意味着indices
是指向const GLvoid * const
的指针。
上面的数据类型也可以写为GLvoid const * const
。 这告诉我们GLvoid*
指针指向的数据或指针本身都不能修改。
indices
本身没有这种限制。 您可以修改指向GLvoid*
的指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.