我希望将元素的类型作为参数提供给指向未知类型元素的指针数组的初始化
就像这样
void* init(type t)
void* array = malloc(sizeof_type(t)*10));
return array;
}然后再调用例如
init(typeof(int))但是我不知道typeof的返回类型是什么。
我猜sizeof_type think可以通过以下方式实现
malloc((type) 0);提前感谢
PS:如果这是一个向量实现,如果有人能告诉我一些灵活的代码,我也会非常感激的
发布于 2010-07-16 22:14:13
我通常不使用gnu (我认为它只在gnu C中使用),但我不认为它是一个正常意义上的表达式,你可以将它的值赋给一个变量,然后再使用它。我认为它只能在非常特定的上下文中作为一种类型使用。
From the docs:
使用此关键字的语法看起来类似于sizeof,但其构造在语义上的行为类似于使用type定义的类型名称。
typeof-construct可以用在任何可以使用类型定义名称的地方。例如,可以在声明中、强制转换中或在sizeof或typeof.中使用它
发布于 2010-07-16 22:25:32
为什么不能直接使用sizeof呢?类似于:
int c;
void *p = calloc( 10,sizeof(c) );发布于 2010-07-16 22:17:58
这一点:
#define INIT(t) (malloc(sizeof(t) * 10))可以像这样使用:
int* a = INIT(int);或者可能是这样的:
void* b = INIT(typeof(c));或者甚至是这样:
void* b = INIT(c);从sizeof(c) == sizeof(typeof(c))开始。
https://stackoverflow.com/questions/3265676
复制相似问题