加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何处理typedef而不在头文件中包含头文件

发布时间:2020-12-16 07:03:57 所属栏目:百科 来源:网络整理
导读:至于处理一个更大的项目,我想抛出一些自己的类型(例如myType). “匆匆进入” – 方法是将这些typedef放入一个标题(比如myType.h),以及一些处理这些类型的函数. 如果我在某处使用新类型,我将myType.h包含在我的源文件中.精细. 但是如果我想在某个地方使用新类
至于处理一个更大的项目,我想抛出一些自己的类型(例如myType). “匆匆进入” – 方法是将这些typedef放入一个标题(比如myType.h),以及一些处理这些类型的函数.

如果我在某处使用新类型,我将myType.h包含在我的源文件中.精细.

但是如果我想在某个地方使用新类型作为函数签名中的参数,我需要将myType.h包含在包含该函数的模块的头中.使用一个或另一个typedef,这对我来说似乎没问题,但是我拥有的类型越多,我需要的头文件中包含的内容越多,可能包括更多标头,同时使用包含其他自己类型的类型.这导致我称之为“依赖地狱”.

是否有一种聪明,时尚,最佳实践,解决这种困境的解决方案?

我知道有可能将这些类型作为void-pointer传递,然后将它们放回到函数内部,但随后我从编译器中删除了重要的类型检查.

更糟糕的是,extern在这里被认为是最糟糕的做法..

编辑:

详细地:

myType.h:

#include "otherType.h"

typedef struct {
  char Name[32];
  int Size;
  otherType someType;
} myType;

processSomeHow(myType _myType,int NewSize);

otherType.h

#define SOME_CONST 32

typedef struct { [...] } otherType;

someModule.h:

#include "myType.h"

int specialProcessSomeHow(myType _myType);

someModule.c:

int specialProcessSomeHow(myType _myType)
{
  int Size = 64;
  return(processSomeHow(_myType,Size));
}

现在我将someType.h间接包含在someModule.h中,更糟糕的是,我将它包含在每个模块中,包括someModule.h.现在我到处都有一个SOME_CONST,很难弄清楚它来自哪里.我必须保持两个包括树.

解决方法

就像在gtk库中一样,你可以使用一个头文件并根据你的需要进行拆分.

type.h
- myType.h
-- someType.h
- otherType.h
- List item

以及你的CONST问题:
如果你只需要一个c.file.不要在HeaderFile中使用它们.
你可以将它们命名为“MY_TYPE_SOME_CONST”或“OTHER_TYPE_SOME_CONST”;

//编辑:

说清楚:只需添加’this.h’文件并命名即可.

#ifndef TYPE_H_
#define TYPE_H_

#include myType.h
#include someType.h
#include otherType.h

#endif /* TYPE_H_ */

现在,您可以为需要类型的每个文件使用“#include this.h”.(this.h不是真的,把它命名为独特的东西)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读