所以,我使用的是OpenGL,其中typedefs unsigned integer
- >GLuint
。忽略OpenGL typedefs有什麼影響?
由於某些原因,我覺得用GLuint代替更通用的無符號整數或uint32_t是錯誤的。
關於忽略typedef的負面/積極方面的任何想法?
所以,我使用的是OpenGL,其中typedefs unsigned integer
- >GLuint
。忽略OpenGL typedefs有什麼影響?
由於某些原因,我覺得用GLuint代替更通用的無符號整數或uint32_t是錯誤的。
關於忽略typedef的負面/積極方面的任何想法?
typedefs可以讓你的代碼更加便攜。如果您曾經想轉移到一個平臺,其中GLuint
可能有不同的基礎類型(無論出於何種原因),那麼使用typedef
將是明智的。
您的代碼總是有機會移植到一個平臺,其中GLuint != unsigned int
。如果你打算忽略typedef,那麼至少要添加一些編譯時檢查,如果它們與預期的不同,會導致編譯錯誤。
一般來說,請參閱K-ballo和Chad La Guardia的上述回答,這就是此類typedefs背後的意圖。這在某些情況下隱藏了實際的數據類型,以防API在未來版本中發生變化(不太可能發生在OpenGL上,但我已經看到它發生了)。如果數據類型更改,則需要重新編譯,但不更改代碼。
儘管如此,人們不得不說,圖書館開發人員經常過分強調這種特殊的傻事。
在這種特殊情況下,OpenGL規範非常清楚GLuint
是什麼(2.4章)。它是一個至少32位長度的無符號整數。他們沒有留下太多解釋或改變的空間。
就此而言,有沒有機會,它可能永遠是比uint32_t
任何其他(因爲這是的uint32_t
很清晰),並沒有很好的理由,你爲什麼不能代替它使用uint32_t
如果您寧願這樣做(除了使用GLuint明確表示變量是用於OpenGL的,但是meh)。
原則上仍然當然不同於unsigned int
,因爲關於int
(sizeof(long) >= sizeof(int) >= sizeof(short)
除外)的精確尺寸沒有多少內容。