【发布时间】:2015-11-08 09:22:27
【问题描述】:
我有一个struct Element。当我尝试将元素数组初始化为NULL 时,
我收到错误:从类型 void * 分配给类型 Element 时类型不兼容。
如何初始化void *数组?
typedef struct _Element Element;
struct _Element {
void* data;
};
typedef struct _ArrayList ArrayList;
struct _ArrayList {
int size;
Element *elements;
};
int main() {
ArrayList *list;
list->size = 100;
list->elements = (Element*)calloc(sizeof(Element), list->size);
for (i = 0; i < list->size; i++) {
/*
* error: incompatible types when assigning to type
* ‘Element’ from type ‘void *’
*/
list->elements[i] = NULL;
}
}
【问题讨论】:
-
请注意,
_Element是保留标识符,不应使用。每7.1.3 Reserved identifiers of the C11 standard:“所有以下划线开头的标识符以及大写字母或另一个下划线始终保留供任何使用。”和“所有以下划线开头的标识符始终保留用作在普通和标记名称空间中具有文件范围的标识符。”
标签: c struct void-pointers