共享源文件中的类型定义

时间:2017-08-25 01:27:13

标签: c resource-files

我只是对这个分离源文件的新手。 。 是否可以将我定义的类型共享给任何其他源文件? 。 。

这是我在myTypeDef.h中的定义

typedef struct
{
    int x, y, w, h;
    short life;
}Man;

如果我创建一个新的.h(名为draw.h)文件,它将绘制如下图像:

#include "myTypeDef.h"


void rendererFunction(Man *man);

然后我创建一个.c(名为draw.c)文件,它将实现draw.h中的内容,如下所示:

#include "draw.h"

void rendererFunction(Man *man)
{
    draw(man->x, man->y, man->w, man->y);
}

那么如果我还创建了一个update.h(和update.c for implementation)文件来更新他的位置呢?我是否真的必须将draw.h连接到update.h才能获得我的类型定义对象?或者,当我在主要文件中包含.h时,是否还有其他方式共享类型定义的对象而不重复定义?

我希望有人可以帮助我。感谢

2 个答案:

答案 0 :(得分:1)

c头文件中常见的习语是包含警戒。这些使用预处理器来防止多个定义之类的事情。他们看起来像:

#ifndef MYMODULE_MYFILENAME_H
#define MYMODULE_MYFILENAME_H
.... Your definitions.... 
#endif

这使您可以始终包含包含给定文件正在使用的标头,即使某些其他文件发生也包含您需要的标头。确实这是一个很好的做法,所以如果以后你重构一个头文件不再包含你需要的文件,一些看似无关的代码就不会开始无法编译。

答案 1 :(得分:0)

update.hinclude "myTypeDef.h"。与您对draw.hdraw.c;

所做的一样

或者在draw.hupdate.h中,只需使用句子struct Man;来声明结构。在draw.cupdate.c中使用include "MyTypeDef.h"