我必须在已经存在的大代码中添加一段代码。
我的代码中有一个指针* Ptr。该指针的类型为unsigned char。

unsigned char * Ptr;

我有下面的结构。

struct
{
   uint8_t tag;
   uint16_t data[size];
   bool status;
}Test;

Test *TagData;


指针的类型转换如下,现在struct指针指向指针Ptr指向的位置;

TagData = (Test *)Ptr;


在我的代码中,我将一些输出值复制到此结构,以便将这些值复制到* Ptr指向的内存位置。

为了将某些值复制到结构中的数据数组,我需要找到该struct成员的偏移量。我想做而不使用offsetof函数。我尝试执行以下操作,但出现编译器错误。

TagData->data  = (uint16_t *) (Ptr + sizeof(TagData->tag));


谁能告诉我该怎么做?而且我不想使用offsetof函数。有没有更简单的方法可以做到这一点?

最佳答案

不,没有比使用offsetof更简单的方法了,该方法旨在满足您的需求。

另外,offsetof不是函数,而是一个宏,它隐藏了如果不使用offsetof会执行的指针运算。

因此,明确的答案:由于您甚至都没有给出理由,所以这不可能是一个很好的理由。克服它并使用offsetof

关于c - 在不使用offsetof的情况下获取结构成员的偏移量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42077843/

10-10 18:23