gpt4 book ai didi

c - 不使用 offsetof 获取结构成员的偏移量

转载 作者:行者123 更新时间:2023-11-30 18:19:45 26 4
gpt4 key购买 nike

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

无符号字符 *Ptr;

我有以下结构。

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

Test *TagData;

指针的类型转换如下,现在结构体指针指向指针 Ptr 所指向的位置;

TagData = (Test *)Ptr;

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

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

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

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

最佳答案

不,没有比使用 offsetof 更简单的方法了,它是为满足您的需要而设计的。

此外,offsetof 不是一个函数,而是一个宏,它隐藏了您在不使用 offsetof 时要做的指针算术。

所以,明确的答案:既然你连理由都没有给出,那它就不可能是一个太好的理由。克服它并使用 offsetof

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com