[英]Dereferencing pointer to incomplete type [Working on structs]
我已經聲明:
#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;
這是我第一次在這里問一個問題,所以,如果我錯過了重要的事情,請原諒我。
文件dictionary.h
僅包含類型struct dictionary_s
的名稱,因此對main
函數可見。 這意味着它不知道結構包含什么。
您需要將struct dictionary_s
的定義移動到頭文件中。 這樣就可以從main
使用它。
您必須將struct
的定義放在頭文件中,而不是在dictionary.c
-file中; 否則,其成分在dictionary.c
之外是未知的。
因此,您的dictionary.h
應該如下所示:
struct dictionary_s{
char * name;
llist_t content;
int entries;
};
typedef struct dictionary_s* dictionary_t;
您的文件dictionary.c
可能已過時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.