2011-10-13 71 views
2

所以,我使用的是OpenGL,其中typedefs unsigned integer - >GLuint忽略OpenGL typedefs有什麼影響?

由於某些原因,我覺得用GLuint代替更通用的無符號整數或uint32_t是錯誤的。

關於忽略typedef的負面/積極方面的任何想法?

回答

6

typedefs可以讓你的代碼更加便攜。如果您曾經想轉移到一個平臺,其中GLuint可能有不同的基礎類型(無論出於何種原因),那麼使用typedef將是明智的。

2

您的代碼總是有機會移植到一個平臺,其中GLuint != unsigned int。如果你打算忽略typedef,那麼至少要添加一些編譯時檢查,如果它們與預期的不同,會導致編譯錯誤。

1

一般來說,請參閱K-ballo和Chad La Guardia的上述回答,這就是此類typedefs背後的意圖。這在某些情況下隱藏了實際的數據類型,以防API在未來版本中發生變化(不太可能發生在OpenGL上,但我已經看到它發生了)。如果數據類型更改,則需要重新編譯,但不更改代碼。
儘管如此,人們不得不說,圖書館開發人員經常過分強調這種特殊的傻事。

在這種特殊情況下,OpenGL規範非常清楚GLuint是什麼(2.4章)。它是一個至少32位長度的無符號整數。他們沒有留下太多解釋或改變的空間。

就此而言,有沒有機會,它可能永遠uint32_t任何其他(因爲這是的uint32_t很清晰),並沒有很好的理由,你爲什麼不能代替它使用uint32_t如果您寧願這樣做(除了使用GLuint明確表示變量是用於OpenGL的,但是meh)。
原則上仍然當然不同於unsigned int,因爲關於intsizeof(long) >= sizeof(int) >= sizeof(short)除外)的精確尺寸沒有多少內容。