我必须在已经存在的大代码中添加一段代码。
我的代码中有一个指针* 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/