C中多个文件的结构

时间:2015-01-10 14:45:16

标签: c

在我的头文件中有这个简单的结构

struct cont
{
 char fname[10];
 char lname[10];
 char user[10];
 char pass[10];
 float price;
}s;

我在头文件中有关于struct cont s声明的链接错误。 顺便说一下,我有多个文件(.C)包含函数和主要文件。文件无法找到结构。这是宣布全球结构的正确方法吗?所以我可以将它用于我的所有文件。

2 个答案:

答案 0 :(得分:4)

最好的方法是

  1. 在头文件中定义结构。
  2. 在头文件中声明该结构类型的一个extern变量。
  3. 在您的.c个文件中定义变量。

答案 1 :(得分:1)

您可以考虑几个选项,例如,您可以在头文件中声明这个选项

struct cont
{
   char fname[10];
   char lname[10];
   char user[10];
   char pass[10];
   float price;
};

然后在每个需要使用struct的.c文件中包含头文件,并将结构的实例声明为struct cont instanceOfCont;

#include "headerfile.h"
struct cont instanceOfCont;

你可以编写函数来改变结构的成员,然后将结构的定义放在实现这些函数的文件中,比如cont.c

struct cont
{
   char fname[10];
   char lname[10];
   char user[10];
   char pass[10];
   float price;
};

const char *contGetFirstName(struct cont *instance)
{
    if (instance == NULL)
        return NULL;
    return instance->fname;
}
.
.
.

/ *依此类推* /

然后在另一个c文件中声明struct的实例,使用像

这样的指针
struct cont *instance;

最后你可以typedef结构太像

typedef struct cont Cont;

然后使用Cont代替struct cont来声明它的实例。