我想知道在C中是否有可能从数组中的元素中获取类型。我有以下代码,您必须手动指定类型,但想删除第二个参数。
#define ForEach( func, type, list)do {\
int num_elements = sizeof(list) / sizeof(type);\
int iter;\
for( iter = 0; iter < num_elements; iter++)\
func(list[iter]);\
}while(0)
void display(int n) {
printf("\n%d\n", n);
}
int main(void){
int list [] = { 1,2,3,4,5,6,7,8,9,10};
ForEach(display, int, list);
return 0;
}
答案 0 :(得分:3)
出于此问题的目的 - 您可以对数组元素使用sizeof
运算符 -
sizeof(list[0])
如果您正在使用GCC(或任何GNU),则会有一个名为typeof
的扩展名。你可以做到
sizeof(typeof(list[0]))
但C方式是直接使用sizeof
元素。
答案 1 :(得分:0)