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

c - PostgreSQL 源代码 - offsetof() + sizeof() 获取结构的大小?

我正在扫描 pgSQL 的源代码,发现了一个有趣的宏。

的定义XLogRecord

我很困惑为什么微使用offsetof最后一个成员和最后一个成员的总和sizeof来定义结构的大小?sizeof如果我直接使用结构会有什么不同吗?

顺便问一下, struct 的大小是XLogRecord多少?由于内存对齐,我认为它是 24 字节。但我从这里看到大小是 32 字节(这里是 pciture)。有人也可以解释一下吗?
更新:大小XLogRecord因版本而异。在最新版本中,这个大小正好是 24 字节。

任何帮助或信息将不胜感激。

代码摘自https://github.com/postgres/postgres/blob/4035cd5d4eee4dae797bfc77ab07f8dcd8781b41/src/include/access/xlogrecord.h

0 投票
0 回答
23 浏览

c++ - 如何制作一个宏来生成具有目标类成员的方法?

可以使用宏为目标类及其变量生成方法吗?特别是一个类方法,它只获取目标类的成员偏移量。就像在下面的代码中一样,GetOffsets(){}为我的使用场景命名的方法,无论是返回列表的生成方法还是设置为名为 offsets 的静态列表变量的 void 返回方法都可以。

上面,MetaClass 是宏,Actor 是宏的目标类。举个例子。一些代码或替代建议会有所帮助。此元/偏移信息将用于反射目的。

0 投票
2 回答
281 浏览

c - 使用 offsetof 访问结构成员

我有以下代码:

最后一行执行对x.b.

此代码是否根据任何 C 标准定义?

我知道:

  • *(char*)ptr = 42;尽管仅定义了实现,但已定义。
  • ptr == (void*)&x.b

我猜想访问ptrvia指向的数据int*不会违反严格的别名规则,但我不完全确定标准是否能保证这一点。