我只是对这个分离源文件的新手。 。 是否可以将我定义的类型共享给任何其他源文件? 。 。
这是我在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时,是否还有其他方式共享类型定义的对象而不重复定义?
我希望有人可以帮助我。感谢
答案 0 :(得分:1)
c头文件中常见的习语是包含警戒。这些使用预处理器来防止多个定义之类的事情。他们看起来像:
#ifndef MYMODULE_MYFILENAME_H
#define MYMODULE_MYFILENAME_H
.... Your definitions....
#endif
这使您可以始终包含包含给定文件正在使用的标头,即使某些其他文件发生也包含您需要的标头。确实这是一个很好的做法,所以如果以后你重构一个头文件不再包含你需要的文件,一些看似无关的代码就不会开始无法编译。
答案 1 :(得分:0)
在update.h
,include "myTypeDef.h"
。与您对draw.h
和draw.c
;
或者在draw.h
和update.h
中,只需使用句子struct Man;
来声明结构。在draw.c
和update.c
中使用include "MyTypeDef.h"
。