错误:取消引用指向不完整类型的指针 - >将结构传递给模块

时间:2014-04-13 21:12:56

标签: c pointers struct module

结构:

    #include <gtk/gtk.h>
    #include "db_interface.h"

    struct AddNewEmployee {
    const gchar *fname;
    const gchar *lname;
    };

    void new_emp_get_data(GtkWidget *widget, gpointer add_emp_window)
    {
      struct AddNewEmployee n_e_s; //new employee struct

      <gtk portion removed to clean code> 

      n_e_s.fname=gtk_entry_get_text(GTK_ENTRY(first));
      n_e_s.lname=gtk_entry_get_text(GTK_ENTRY(last));

      db_add_new_emp(&n_e_s); //pass the struct to db_interface to add new employee
    }

头文件(db_interface.h)

    #ifndef DB_INTERFACE_H
    #define DB_INTERFACE_H

    struct AddNewEmployee *n_e_s;
    void db_add_new_emp(struct AddNewEmployee *n_e_s);

    #endif

第二个模块(db_interface.c)

    #include <stdio.h>
    #include "db_interface.h"

    void db_add_new_emp(struct AddNewEmployee *n_e_s)
    {
      printf("Greetings from db_interface, %s\n", n_e_s->fname);
    }

当我尝试使用GCC编译代码时,我收到消息&#34;错误:解除指向不完整类型的指针&#34;。我已经尝试了几个不同的答案,当其他人发布他们的问题时,我发现这个错误,但还没有找到一个有效的。我将函数中的代码从db_interface.c模块复制到原始模块 - 包含结构的模块 - 它工作正常,所以我知道我的问题在于将结构发送到db_interface.c模块。

1 个答案:

答案 0 :(得分:1)

只需将struct AddNewEmployee移动到db_interface.h,它应该编译得很好。 两个.c文件都需要知道结构是如何实现的。