在编译时确定struct成员字节偏移量?

Col*_*ett 9 c++ struct offsetof offset compile-time

我想在编译时找到struct成员的字节偏移量.例如:

struct vertex_t
{
    vec3_t position;
    vec3_t normal;
    vec2_t texcoord;
}
Run Code Online (Sandbox Code Playgroud)

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

我知道我可以使用offsetof,但这是一个运行时功能,我宁愿不使用它.

我正在努力实现甚至可能吗?

编辑:offsetof是编译时,我的坏!

Sha*_*our 9

offsetof是一个编译时常量,如果我们看一下C++标准的C++ C.3 标准库2段说明:

C++标准库提供了来自C库的57个标准宏,如表149所示.

并且表格包括offsetof.如果我们转到C99标准草案部分,7.17 通用定义3段包括:

offsetof(type,member-designator)

它扩展为一个整数常量表达式,其类型为size_t,其值是以字节为单位的偏移量[...]