我已经声明:
#include stdio.h
#include stdlib.h
#include string.h
#include dictionary.h
int main( int argc, char ** argv ){
char * dictionary_name = DEFAULT_DICTIONARY;
dictionary_t dictionary;
dictionary->entries = 1;
if ( dictionary == NULL){
printf("NULL\n");
return -1;
}
return 0;
}
错误:
src/main.c: In function ‘main’:
src/main.c:40:12: error: dereferencing pointer to incomplete type ‘struct dictionary_s’
dictionary->entries = 1;
在dictionary.c中:
#include dictionary.h
struct dictionary_s{
char * name;
llist_t content;
int entries;
};
在标头(dictionary.h)中:
typedef struct dictionary_s* dictionary_t;
这是我第一次在这里问一个问题,所以,如果我错过了重要的事情,请原谅我。
答案 0 :(得分:0)
文件dictionary.h
仅包含类型struct dictionary_s
的名称,因此对main
函数可见。这意味着它不知道结构包含什么。
您需要将struct dictionary_s
的定义移到头文件中。这样就可以从main
中使用它。
答案 1 :(得分:0)
您必须将struct
的定义放在头文件中,而不是dictionary.c
文件中;否则,它的成分在dictionary.c
之外是未知的。
所以您的dictionary.h
应该如下所示:
struct dictionary_s{
char * name;
llist_t content;
int entries;
};
typedef struct dictionary_s* dictionary_t;
您的文件dictionary.c
可能已过时。