如何处理typedef而不在头文件中包含头文件
至于处理一个更大的项目,我想抛出一些自己的类型(例如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问题: //编辑: 说清楚:只需添加’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不是真的,把它命名为独特的东西) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c – 图表可分性
- ?xml version="1.0" encoding="utf-8&a
- c – 为什么没有初始化器跳进标量类型对象的范围?
- vb.net – Marquee ProgressBar对BackgroundWorker没有响应
- Ultra Edit中的两个正则表达式
- 我该如何从VB.net中最好地查询我的数据集?
- React Native (一) bundling failed: Error: EBUSY: resour
- 基于ARM与μClinux的RTU设计
- c – 添加两个unsigned char变量,结果为int
- ruby-on-rails – Rails / SASS:未定义的操作