结构:
#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模块。
答案 0 :(得分:1)
只需将struct AddNewEmployee
移动到db_interface.h,它应该编译得很好。
两个.c文件都需要知道结构是如何实现的。