Вход на сайт
Что такое sizeof()?
275 просмотров
Перейти к просмотру всей ветки
У меня есть структура, в ней поля Type1 m_field1, Type2 m_field2, Type3 m_field3, etc. Я делаю сериализацию для этой структуры и хочу знать смещение для field3 : st_Offset_Of_Field3. Так как, эта переменная, конечно одинакова для всех объектов/instances, то определяю его как static. Корректно? 
Как посчитать st_Offset_Of_Field3? Вроде бы просто: st_Offset_Of_Field3 = sizeof(m_field1) + sizeof(m_field2);
Но компилятор ругается (GCC): обращаюсь из статик переменной к non-static полю. А какая разница для sizeof - значение же высчитывается в compile-time, а не в run-time?
P.S. Я знаю workaround: st_Offset_Of_Field3 = sizeof(Type1) + sizeof(Type2);
Но если завтра, кто-нибудь с "кривыми руками" поменяет Type1 на Тype5 и забудет это сделать для st_Offset_Of_Field3?
А у меня соответственно и таких полей куча,
и структур, и типов, и смешений...

Как посчитать st_Offset_Of_Field3? Вроде бы просто: st_Offset_Of_Field3 = sizeof(m_field1) + sizeof(m_field2);
Но компилятор ругается (GCC): обращаюсь из статик переменной к non-static полю. А какая разница для sizeof - значение же высчитывается в compile-time, а не в run-time?

P.S. Я знаю workaround: st_Offset_Of_Field3 = sizeof(Type1) + sizeof(Type2);

