忽略OpenGL typedef有什么影响?

时间:2011-10-13 17:53:02

标签: opengl typedef

所以,我正在使用OpenGL,其类型为unsigned integer - > GLuint

出于某种原因,用GLuint代替更通用的无符号整数或uint32_t,我觉得错误。

有关忽略typedef的消极/积极方面的想法吗?

3 个答案:

答案 0 :(得分:6)

typedef可以使您的代码更具可移植性。如果您想要转移到GLuint可能具有不同基础类型(无论出于何种原因)的平台,那么使用typedef是明智的。

答案 1 :(得分:2)

您的代码总是有可能移植到GLuint != unsigned int的平台。如果要忽略typedef,那么至少添加一些编译时检查,如果它们与预期的不同,会导致编译错误。

答案 2 :(得分:1)

一般来说,请看K-ballo和Chad La Guardia的上述答案,这就是这种typedef背后的意图。那,并且在某些情况下隐藏实际的数据类型,以防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)除外)说的不多。