c - 取消引用指向不完整类型的指针 [处理结构]

标签 c pointers types

我已声明:

#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;
};

在 header (dictionary.h)中:

typedef struct dictionary_s* dictionary_t;

这是我第一次在这里提问,所以,如果我遗漏了一些重要的内容,请原谅我。

最佳答案

文件dictionary.h仅包含类型structdictionary_s的名称,因此这就是您的main函数可见的全部内容。这意味着它不知道该结构包含什么。

您需要将structdictionary_s的定义移动到头文件中。这样就可以从 main 中使用它。

关于c - 取消引用指向不完整类型的指针 [处理结构],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53267927/

相关文章:

c - C中#符号的使用

c - 递归中的 Big Theta

c - C 中的硬链接(hard link)表

c - 如何 'clear'一个字符串数组?

c - 输入一行后程序崩溃了。怎么修?

c++ - 传递指向临时对象的指针

.net - 为什么 .NET Boolean 有 TrueLiteral 和 TrueString?

c - 正在重新分配的指针未分配

function - GHC API : Find all functions (and their types) in scope

scala - 使用扩展类中的路径相关类型时出错