【发布时间】:2013-06-10 13:24:36
【问题描述】:
可以typedef一个数组吗?
我有一组向量函数,它们都接受指向浮点数的指针,浮点数是三个浮点数的数组。我可以 typedef float* vec3_t,但它不会让我通过简单地将对象设置为等于括号中的数组来创建对象。
typedef float* vec3_t;
vec3_t a = {1,1,1}; // Does not work
vec3_t b = (float[]){1,1,1}; // Works
float c[] = {1,1,1}; // Works
void f(vec3_t x);
f({1,1,1}); // Error
f((float[]){1,1,1}; // OK
有人能解释一下为什么会这样吗?
【问题讨论】:
-
请注意
typedef float* vec3_t是一个指针,而不是一个数组。一个数组是typedef float vec3_t[3]。数组不是指针。 -
我认为它与浮点数的字节长度有关。 char* 有效,因为一个 char 是 1 个字节。但是1个浮点数是...... 4个字节?不确定
-
我认为标题与您的实际问题没有太大关系。请改写。