簡體   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