C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何处理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问题:
如果你只需要一个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不是真的,把它命名为独特的东西)

大佬总结

以上是大佬教程为你收集整理的如何处理typedef而不在头文件中包含头文件全部内容,希望文章能够帮你解决如何处理typedef而不在头文件中包含头文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。