如何使用其他文件中的结构?

时间:2016-02-10 16:23:38

标签: c struct header extern

我正在尝试在其他文件中使用* .h命名结构,例如clube.c,它将从定义为Clubes的结构中创建一个数组。

structures.h:

extern typedef struct Clubes{
 char *codClube;
 char *nome;
 char *estadio;
};

无论我做什么,它都不会出现在我的clubes.c中。

注意:已经包含了“structures.h”

再次感谢, 如果有任何我可以提供的信息可以帮助你帮我问一下。

3 个答案:

答案 0 :(得分:3)

关键字typedef只允许您定义类型,例如typedef int whole_number这将创建类型whole_number,现在您可以像使用int一样使用它,{{ 1}}与结构相同的东西。人们在结构上使用typedef,因此他们不需要编写whole_number x = 5;

struct Clubes

现在你不必使用typedef struct Clubes{ char *codClube; char *nome; char *estadio; } clubes; ,你可以使用更短更容易编写的struct Clubes x;

clubes x;关键字为您提供全局链接,在这种情况下,它不会执行任何操作。

你的问题有点令人困惑。如果要创建此结构,然后在其他文件中使用它,则需要创建头文件:

Extern

将其保存在一个头文件中,例如#ifndef __CLUBES_H_ #define __CLUBES_H_ 1 struct Clubes{ char *codClube; char *nome; char *estadio; } clubes; #endif ,然后在其他一些clubes.h代码中,您要使用此结构,只需在c

中添加标题

答案 1 :(得分:0)

完美使用头文件

/* put this in clube.h */
struct Clubes{
 char *codClube;
 char *nome;
 char *estadio;
};

/* put this in clube.c */
#include "clube.h"

struct Clubes myarray[5];

答案 2 :(得分:0)

我认为你对这些关键词的作用感到困惑。

struct创建一个新类型。这不会创建任何类型的实例。

extern用于为全局变量提供链接。

typedef为现有类型提供新的全局名称。

/* clube.h */

/* define and declare the Clubes struct */
struct Clubes {
    char* codClube;
    char* nome;
    char* estadio;
}

/* typedef the Clubes struct.
 * Now you can say struct Clubes or Clubes_t in your code.
 */
typedef struct Clubes Clubes_t;

/* Now you've created global linkage for my_clubes.
 * I.e. two cpp files could both modify it
 */
extern struct Clubes my_clubes[2];



/* clube.c */

#include "clube.h"

/* Now you've got storage for my_clubes */
Clubes_t my_clubes[2];


/* some_other.c */

#include "clube.h"

void fun() {
    my_clubes[0].codClube = "foo";
    /* etc... */
}