所以这是我的头文件:
#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 *'
答案 0 :(得分:0)
您正尝试分配给数组。这不会发生。数组就是它最初的大小。它不能采用新的地址和大小。
variables
需要成为指针。
struct _VariableVector {
int size; // elements full in array
int capacity; // total available elements
Variable *variables;
};