引用结构中的值

Referencing values in structures

本文关键字:结构 引用      更新时间:2023-10-16

我正在查看Android 4.3中的opcommon.cpp,并将其与4.1.1中的相同文件进行比较

在4.1.1和4.3中,Object.h文件将Instfield结构定义为
struct InstField : Field {
    int             byteOffset;
};

和Field结构为

struct Field {
ClassObject*    clazz;          /* class in which the field is declared */
const char*     name;
const char*     signature;      /* e.g. "I", "[C", "Landroid/os/Debug;" */
u4              accessFlags;};

现在我的问题很简单:给定声明InstField* ifield;opcommon从4.1.1的ifield->field.name改为4.3的ifield->name来检索name变量。两者有什么区别,哪个更好?如果不是,他们为什么要改变它?

我不能谷歌这个问题,因为->被忽略了,我不知道这个词来描述操作符。例如field.name是引用结构中的变量和->用于解引用指针,并做同样的事情,但它的名称是什么?另一个关于术语的小问题,InstField结构定义是包装器还是扩展?

如果您也发布了4.1.1的代码片段,那将会很有帮助。ifield->field.name建议字段本身是结构体InstField的成员,并且字段也是一个具有成员名称的结构体(可以是任何结构体,不一定是field类型)。另一方面,ifield->name表明name本身是结构体InstField的成员(通过继承),并且不是成员的成员。您需要查看4.1.1中定义InstField的部分。这可能与4.3节的定义不同