簡體   English   中英

取消引用不完整類型的指針[在結構上工作]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM