两种风格:
struct _something
{
...
};
typedef struct _something someting;
以及那种风格:
typedef struct _something
{
...
} something;
是 C 中正确的 typedef 声明。
请注意结构声明的存在在标题中文件是故意制作的:我need可以在其他地方访问结构的内部组件。
第一个声明的一个缺点是,当您使用任何 IDE 时,自动“跳转到声明”通常会将您引导至typedef struct _something someting;
而不是直接给你真正的结构定义。
在第二种方法中,您可以直接进入结构定义。
有人会使用第一种方法吗?
我正在编写的代码充满了这些......
这只是维护者的坏/好习惯吗?
将 typedef 和 struct 声明分开有一个明显的优点,如果将两者分开在不同的文件中,这一优点就很明显。它允许数据封装。
您在头文件中声明您的
typedef struct whatever typename;
这是一个类型的声明struct whatever
不知道它是如何实现的。您现在可以声明属于接口一部分的函数,而无需透露结构内部的任何内容。传递一个指针到那个typename
这就是所需要的一切。
在“类”的实现文件中(我将其放在引号中,因为我们纯粹在 C 上下文中讨论),您可以执行以下操作:
#include "header.h"
struct whatever {
...
...
/* can even contain references to `struct whatever` or even `typename` */
};
这种封装的优点是您可以更改内部结构,而无需重新编译应用程序的其余部分。如果您使用动态库,可以派上用场。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)