这是我的头文件:
#define VECTOR_INITIAL_CAPACITY 20
struct _Variable {
char *variableName;
char *arrayOfElements;
int32_t address;
};
typedef struct _Variable Variable;
struct _VariableVector {
int size; // elements full in array
int capacity; // total available elements
Variable variables[VECTOR_INITIAL_CAPACITY];
};
typedef struct _VariableVector VariableVector;
void init(VariableVector *variableVector);
void append(Variable *variable);
Variable* find(char *variableName);
这是我的 .c 文件,我正在其中尝试实现 init 方法:
#include "VariableVector.h"
void init(VariableVector *variableVector) {
variableVector->size = 0;
variableVector->capacity = VECTOR_INITIAL_CAPACITY;
// allocate memory for variableVector
variableVector->variables = malloc(
sizeof(Variable) * variableVector->capacity); // <== ERROR HERE
}
我上面遇到的错误是
incompatible types when assigning to type 'struct Variable[20]' from type 'void *'
最佳答案
您正在尝试分配给一个数组。那不会发生。该数组位于其所在位置,大小与最初相同。它不能采用新的地址和大小。
变量
需要是一个指针。
struct _VariableVector {
int size; // elements full in array
int capacity; // total available elements
Variable *variables;
};
关于c - 在 C 中从类型 void * 分配给类型时出现错误不兼容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20086207/