问题标签 [offsetof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2213 浏览

c - 为什么非常量 offsetof 表达式有效?

为什么会这样:

如果我正确地记得 offsetof 的定义,它是一个编译时构造。使用 'i' 作为数组索引会产生非常量表达式。我不明白编译器如何在编译时评估表达式。为什么不将此标记为错误?

0 投票
1 回答
360 浏览

c - C语言中带类型转换的宏,详细学习offsetof

以下代码及其输出:

我试图理解这里使用的类型转换。我认为,编译器的作用是将其视为(type *)(value)从地址(值)开始的类型。因此,对于给定的结构,预期值为 0,即 offsetof 为 b,但由于我们使用不同的值进行类型转换,我们得到不同的偏移量。请让我知道我的理解是否正确。我只是想了解文字是如何进行类型转换的及其含义。这在Linux内核中使用。因此也标记了它们。

0 投票
3 回答
9934 浏览

c++ - 在编译时确定结构成员字节偏移量?

我想在编译时找到结构成员的字节偏移量。例如:

我想知道字节偏移量normal是(在这种情况下应该是12。)

我知道我可以使用offsetof,但这是一个运行时函数,我不想使用它。

我正在努力实现的目标是可能的吗?

编辑offsetof是编译时,我的错!

0 投票
1 回答
576 浏览

c - 打印所有结构成员的偏移量

我的意图是输出一个列表,其中包含所有结构成员的偏移量typedef struct

在我的例子中,这个结构存储在一个外部 EEPROM 中,可以通过串行连接访问的接口按字节访问。

要访问 EEPROM 内容,我需要知道结构成员的偏移量。

如何告诉编译器对每个结构成员执行 offsetof 任务?

0 投票
4 回答
487 浏览

c++ - C++11 有一些可移植且有效的方法来从嵌套类访问封闭类吗?

我需要的可以通过将this封闭类的指针存储到嵌套类中来完成,例如:

这很好用,但sizeof(void*)每个嵌套成员类需要更多的内存字节。是否存在有效且可移植的方法来执行此操作,而无需存储指向 in 实例的CEnclosing指针m_e

0 投票
2 回答
1379 浏览

c++ - 对模板类使用 offsetof

从 C++ 标准:

标准布局类是这样的类:

— 没有非标准布局类(或此类类型的数组)或引用类型的非静态数据成员,

— 没有虚函数 (10.3) 和虚基类 (10.1),

— 对所有非静态数据成员具有相同的访问控制(第 11 条), — 没有非标准布局的基类,

— 要么在最派生类中没有非静态数据成员,并且最多有一个具有非静态数据成员的基类,要么没有具有非静态数据成员的基类,并且

— 没有与第一个非静态数据成员相同类型的基类

宏 offsetof(type, member-designator) 在本国际标准中接受一组受限制的类型参数。如果 type 不是标准布局类(第 9 条),则结果未定义

offsetof考虑到这些语句,对于依赖于模板参数的成员是否有任何安全的使用方式?如果没有,我如何获得模板类中成员的偏移量?使用以下内容可能不安全:

在非标准布局类上?

在根据标准不安全的样本之后:

0 投票
4 回答
2133 浏览

c++ - 从成员中查找结构基地址的标准方法

Data在堆上分配了一个实例,以及一个指向其std::string b;成员的指针。如何Data以标准方式获取字符串所属实例的基地址,同时考虑偏移和填充?

我试过从指针中减去sizeof(int)和,但我无法让它工作。std::offsetof(Data, std::string)std::string*

0 投票
1 回答
487 浏览

templates - gcc,我可以将 offsetof() 与指向成员的模板指针一起使用吗?

下面的代码在这里:https ://ideone.com/XnxAyw

我得到的编译器错误是:

Visual Studio 可以使用offsetof(type, 'pointer to member'),但这是因为它松懈吗?如果是这样,是否有人知道使用 offsetof() 和指向成员模板参数的指针的符合标准的方法?

这里的另一个尝试:https ://ideone.com/HD8PI0

在这一点上完全被难住了,这是第二次尝试:

0 投票
5 回答
474 浏览

c++ - 关于 C 和 C++ 中的 offsetof 用法?

在 C 中,我看到了一些 offsetof 的用法来计算结构中成员到其开头的偏移量?

是否仍然建议在 C++ 中使用?没有这个宏还有其他方法吗?

0 投票
1 回答
286 浏览

c++ - getting offset of struct member crash

As far as i know "offsetof" macro is defined as :

based on this link : http://en.wikipedia.org/wiki/Offsetof

So I write my own code snippet to calculate offset of a struct members:

My questions are:

  • Does the type-cast cause the crash. Why can`t cout the offset of the first member but printf can?
  • Why should we type-cast. Is that must be done ?

Any opinions are truely appreciated :)