为什么我会"解除指向不完整类型的指针"?

the*_*eva 0 c struct pointers

我不明白为什么我会收到这个错误.我试过谷歌,但我认为我的代码似乎正确...主要我有这个:

Database *database;
database = (Database *)malloc(db_sizeOfStruct());

database->key = "word";
Run Code Online (Sandbox Code Playgroud)

在我的模块文件中,我有这个:

typedef struct database {
     char key;
     char value;
     struct database *next;
} Database;

int db_sizeOfStruct() {
    return sizeof(struct database);
}
Run Code Online (Sandbox Code Playgroud)

编译器给出"解除指向不完整类型的指针",为什么?我试图理解指针,我认为它可能是关于它们的东西......

unw*_*ind 6

如果代码中的代码main()无法访问声明struct,则不能像使用它那样使用它.

将声明公开(在module.h)中或在模块内进行分配.

此外,您不能将string(char *)分配给单个char,但这是一个不同的错误消息.

另外,请不要malloc()在C中转换返回值.