问题标签 [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 投票
1 回答
1012 浏览

c++ - 指向成员、类型描述符和引用的指针

我正在研究 C++11 中的类型描述符项目。类型描述符的工作是了解类中每个成员的类型、它的大小以及它与对象基础的偏移量。我不支持多重继承以及具有虚拟方法的对象,所以我现在让它变得更简单。目标是能够使用描述符序列化和反序列化对象。

请注意,这是一个宠物项目,用于处理可变参数模板、指向成员的指针和我不熟悉的 C++ 的其他功能等功能,因此无需将我指向 boost::archiving 之类的东西。:)

我实际注册成员的方式与 boost::python::class_ 的方式非常相似。

不幸的是,C++ 的指针指向成员特性不能与 C++ 中的引用一起使用,正如我本周早些时候了解到的那样:https ://stackoverflow.com/a/8336479/1074536 ,所以我不能以 &Foo::refToAndInt 为例。

至于我如何计算成员的偏移量,我没有使用宏的偏移量,因为我的类并不总是 POD。

因此,由于我不能使用指向成员的指针来计算引用的偏移量,所以我想我会尝试:

但是否已在另一个堆栈溢出线程中指出,这是未定义的行为,显然在 LLVM 上它会崩溃。:(

我想避免做一些事情,比如获取前一个成员的偏移量,添加它的大小,然后以某种方式计算对齐我的下一个成员所需的填充,因为它看起来很混乱并且容易出错

所以,我不能同时使用这两种技巧,并且 offsetof 仅适用于 POD。除了我的其他可怕建议之外,关于我下一步可以尝试什么的任何建议?

谢谢!

0 投票
3 回答
2148 浏览

javascript - 获取每个 offsetParent 或总 offSetTop 和总 offSetLeft

我想得到一个子元素的总 offSetTop 和总 offSetLeft ,它们有很多级别的父元素并且可能会加起来。

除了以手动方式逐一添加之外,这是一种速记方式吗?

0 投票
2 回答
894 浏览

c++ - 指向数据成员的指针是它的偏移量吗?

我是否可以安全地假设数据成员 ( offsetof(mystruct, myfield)) 的偏移量在数值上等于使用 检索的成员指针的原始值&mystruct::myfield,还是依赖于实现?

0 投票
1 回答
485 浏览

c++ - 正确使用 offsetof 宏

我正在尝试通过offsetof以下方式使用宏:

它似乎适用于这个简单的测试用例:

现在真正的问题是:

  • 安全吗?(假设与g++一起工作)
  • 它可以与任何标准优化一起使用吗?(主要-O2
  • 有没有更好的方法来做我正在做的事情?(我需要这样做以避免为每个存储xyMapBlock但能够通过块访问它们而不知道相关MapTile
  • u8减去偏移量时,我可以避免强制转换吗?我想没有,但我只是想确定一下..

谢谢

0 投票
3 回答
2048 浏览

c - 如何使用“offsetof”在不同结构之间进行“memcpy”?

我有以下两种结构。我需要从d, e, f复制sourcedestination使用memcpyand offsetof。我怎样才能做到这一点?

0 投票
2 回答
3132 浏览

c++ - C++ 中嵌套 C 结构的 offsetof()

我正在尝试在 C++ (Linux) 中的一个套接字中添加一个套接字过滤器。在套接字过滤器中,我需要获取嵌套在另一个结构中的struct fork_proc_event的偏移量。定义如下所示(cn_proc.h):

在 CI 中会这样做:

int off = offsetof(struct fork_proc_event, parent_pid);

但是我正在用 C++ 开发。如果我尝试这样做:

int off = offsetof(proc_event::fork_proc_event, parent_pid);

我收到以下错误:

offsetof() 线应该如何?

0 投票
1 回答
221 浏览

c++ - 从数据成员中获取非 POD 对象的地址,这是一个一次性嵌套类

我将从一些代码开始:

显然,这是一个人为的例子。代码编译得很好,但我担心“非 POD 类型'myNonPODClass'的偏移量”。有没有更好的方法来做本质上相同的事情而不必将 myNonPODClass 指针传递给嵌套的匿名类构造函数(或类似的构造函数)?“成员”必须准备好无需任何初始化。可能吗?谢谢!

如果你想知道我到底想要什么,我的 PROPERTY 宏和 pastebin 上的注释示例(是的,它很棒 ^^): http: //pastebin.com/xnknf39m

0 投票
1 回答
1161 浏览

c++ - 将 offsetof 与 GLM 一起使用(OpenGL 数学)

我正在使用 GLM OpenGL 数学库编写一个 OpenGL 程序。我想像这样将顶点位置、法线和纹理坐标组合成一个类

然后使用这些数组作为我的顶点缓冲区对象(VBO)。但是,当调用 映射我的 VBO 时,我需要为and成员glVertexAttribPointer在这个组合的 Vertex 结构中给它一个偏移量。normaltexcoord

如果这些只是 POD,我可以使用类似的东西

但这不适用于 glm 数据类型(或至少 g++ 4.4.3 退出)。

获取 Vertex 成员偏移量的推荐方法是什么?

(我理解为什么我不能拥有offsetof任意 C++ 对象的一般原因,但在这种特殊情况下,事情似乎是明确定义的)。

0 投票
1 回答
8357 浏览

c++ - 模板内的 C++ 编译时偏移量

我需要使用带有成员选择器的offsetoffrom a 。template我想出了一个方法,如果你能原谅笨拙的语法:

用法并不完美(充其量是烦人):

constexpr形式更容易使用:

明显的缺点是它不是在编译时完成的(但更容易使用):

我正在寻找的是非多样性的语法constexpr仍然是完全编译时的;但是,我想不出它的语法。我也会对一个offset_of<&S::x>::value(就像其他类型特征一样)感到满意,但无法弄清楚它的语法魔法。

0 投票
3 回答
1844 浏览

c++ - 为什么 offsetof(member) 等于 sizeof(struct)?

我有一个结构定义为:

当我调用这个结构sizeof时:offsetof

输出是:

为什么stuct的大小为4,char使用1字节,int数组的偏移量为4?为什么会有某种填充?另外,为什么 int 数组根本不占用任何空间?