繁体   English   中英

C / C ++签名中两个const的含义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM