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

标签 c++ constants signature

我一直在为 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/

相关文章:

c++ - 删除的默认构造函数仍然是微不足道的吗?

c++ - 如何修改已编译 DLL 中的函数

c++ - 单击新文件夹时 CFileDialog 崩溃

c++ - 为什么 auto_ptr 可以 "seal"一个容器

java - Android Base64编码问题上构建Gigya Signature

c# - 方法签名中的 ICollection[]

ssl - 是什么阻止了根据CA公钥计算CA私钥?

c++ - 在 Windows 7 32 位上安装 OpenSSL

c++ - 在成员函数末尾添加 const 是否是一种好习惯 - 在适当的情况下?

c++ - vector 和常量