如何“研究”一个结构?

时间:2016-04-08 15:09:21

标签: c struct

count = 0中定义的FILE类型为例:有没有办法获取有关其字段(名称,大小,偏移量等)的信息而无需查看标题?有时,使用这样的函数/宏来检查结构的组件会很方便。

6 个答案:

答案 0 :(得分:11)

没有

在C中没有与数据结构相关的元数据,所有这些都在编译时丢失。

完全有可能,因为FILE是不透明的,没有公共标题实际上有定义。它可能只是库标题中的typedef struct __FILE FILE;,然后所有细节都保存在内部,可能在你甚至没有源代码的代码中。

答案 1 :(得分:2)

简单的答案是。你必须有源代码。

答案 2 :(得分:2)

在基于C的结构中,数据以不自定义的方式存储。 - 您必须知道结构定义才能解释数据。这样可以将数据的大小减小到最低限度,并且只要您的程序了解结构,就可以更快地访问。

答案 3 :(得分:1)

答案是否定的。

每当我需要找到有关结构数据成员的信息时,Header Filecomments就足够了。

并且您无法使用函数/宏来检查结构的组件,因为没有与C中的变量和过程相关联的元数据。

答案 4 :(得分:0)

查看有关其字段的信息的唯一方法是获取实际的源,或者说明结构如何组织的api /软件文档。

答案 5 :(得分:-1)

这是不可能的。 C不保留此类信息,可能是由于“您不支付您不使用的费用”原则;它还使语言简单易用。

您最多可以通过struct标准宏查询offsetof中给定成员的位置。但你必须知道该领域的名称。