我必须在已经存在的大代码中添加一段代码。 我的代码中有一个指针,* Ptr。该指针的类型为unsigned char。
unsigned char * Ptr;
我有以下结构。
struct
{
uint8_t tag;
uint16_t data[size];
bool status;
}Test;
Test *TagData;
指针的类型如下所示,现在结构指针指向指针Ptr指向的位置;
TagData = (Test *)Ptr;
在我的代码中,我将一些输出值复制到此结构中,以便将这些值复制到* Ptr指向的内存位置。
为了将一些值复制到结构中的数据数组,我需要找到该struct成员的偏移量。我想在不使用offsetof函数的情况下完成它。我尝试了下面的操作,我收到了编译错误。
TagData->data = (uint16_t *) (Ptr + sizeof(TagData->tag));
有人能告诉你怎么做吗?而且我不想使用offsetof函数。有更简单的方法吗?
答案 0 :(得分:7)
不,没有比使用offsetof
更简单的方法,offsetof
旨在满足您的需求。
此外,offsetof
不是一个函数,而是一个宏,隐藏了如果不使用offsetof
就会执行的指针算法。
所以,明确答案:既然你甚至没有给出理由,那就不是一个好理由。克服它并使用{{1}}。