首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C/C++签名中两个const的含义

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

Stack Overflow用户
提问于 2013-09-24 04:24:58
回答 2查看 1.6K关注 0票数 2

我一直在为scheme包装一个gl文件,它在gl.h头中失败了两次。我在OSx上,所以它可能与平台有关,但在我的生活中从未见过这种语法。

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-24 04:34:54

C和C++中的类型是从右到左的,只不过大多数人坚持把const放在错误的一边。一旦您修复了const的位置

代码语言:javascript
复制
const GLvoid* const*

代码语言:javascript
复制
GLvoid const* const*

读取该类型变得非常简单:它是指向const指针的指针,指向类型为GLvoidconst对象(您可能没有真正的GLvoid类型的卵形对象,但它是任何对象的占位符)。您还可以拥有内部指针可修改和/或对象可修改的组合,这取决于您遗漏了哪个const

票数 3
EN

Stack Overflow用户

发布于 2013-09-24 04:31:50

这意味着indices是指向const GLvoid * const的指针。

上面的数据类型也可以编写为GLvoid const * const。这告诉我们,无论是GLvoid*指针指向的数据,还是指针本身,都不能被修改。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18972943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档