Результаты поиска по запросу "offsetof"
Определение смещения байта члена структуры во время компиляции?
Я хочу найти смещение байта члена структуры во время компиляции. Например: struct vertex_t { vec3_t position; vec3_t normal; vec2_t texcoord; }Я хотел бы знать, что смещение байтаnormal есть (в этом случае должно быть12.) Я знаю, что я мог бы ...
Определение смещения байта члена структуры во время компиляции?
Я хочу найти смещение байта члена структуры во время компиляции. Например:
утверждают, что ни явно, ни неявно. Поправь меня, если я ошибаюсь.
р из реализации MSVC: #define offsetof(s,m) \ (size_t)&reinterpret_cast<const volatile char&>((((s *)0)->m)) // ^^^^^^^^^^^Как можно видеть, он разыменовывает нулевой указатель, который обычно вызывает неопределенное поведение. Это исключение из ...
По определению, сама структура находится по адресу 0. Из этого следует, что адрес поля, на которое указано (шаг 3 выше), должен быть смещением в байтах от начала структуры.
I C смещение определяется следующим образом. #define offsetof(st, m) \ ((size_t) ( (char *)&((st *)(0))->m - (char *)0 )) Почему это не вызовет ошибку сегментации, поскольку мы разыменовываем нулевой указатель? Или это своего рода хакерский ...