我一直在阅读一些代码并且发现了一个不知何故扰乱了我的声明.
typedef GLfloat vec2_t[2];
typedef GLfloat vec3_t[3];
Run Code Online (Sandbox Code Playgroud)
从我的角度来看,如
typedef unsigned long ulong;
Run Code Online (Sandbox Code Playgroud)
意味着ulong被认为意味着无符号长
现在,下面的陈述是否意味着vec2_t [2]相当于GLfloat?
typedef GLfloat vec2_t[2];
Run Code Online (Sandbox Code Playgroud)
最有可能的,可能不是预期的含义.如果有人为我解决这个问题,我将不胜感激.谢谢
CB *_*ley 15
基本上,a typedef具有与普通C声明完全相同的格式,但它引入了该类型的另一个名称,而不是该类型的变量.
在您的示例中,没有typedef,vec2_t将是两个GLfloats 的数组.使用typedef意味着它vec2_t是"两个数组GLfloat" 类型的新名称.
typedef GLfloat vec2_t[2];
Run Code Online (Sandbox Code Playgroud)
这意味着这两个声明是等效的:
vec2_t x;
GLfloat x[2];
Run Code Online (Sandbox Code Playgroud)