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