从数组C获取元素的类型

时间:2017-04-14 16:22:05

标签: c

我想知道在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;
}

2 个答案:

答案 0 :(得分:3)

出于此问题的目的 - 您可以对数组元素使用sizeof运算符 -

sizeof(list[0])

如果您正在使用GCC(或任何GNU),则会有一个名为typeof的扩展名。你可以做到

sizeof(typeof(list[0])) 

但C方式是直接使用sizeof元素。

答案 1 :(得分:0)

我不相信这是可能的。你可以做的不是

sizeof(type)

DO

sizeof(list[0])

但这可能不适用于malloced数组。

Read this post