Вход на сайт
Что такое sizeof()?
275 просмотров
Перейти к просмотру всей ветки
в ответ scorpi_ 26.01.07 17:43
1. Я знаю что такое #pragma pack , alignment in struct, etc 
2. Я делаю serializing, то есть пишу/читаю в стрим, файл и т.д. поля не обязательно в том же порядке как они представленны в структуре, так что алигмент меня не интересует, как и их offset в самой струтуре, а не оффсет в streame.
3. Проблема была подсчитать сумму sizeof_ов не в ран-тайме, как у Вас, а в compilation time и назначить е╦ статик переменной.
4. Кстати, трюк с offsetof помогает для проблемы #3. То есть,
st_Offset_Of_Field3 = sizeof(((MyClass*)0)->m_field1) + sizeof((((MyClass*)0)->m_field2);
и обращаюсь из статик контекста к ВРОДЕ БЫ статик переменным.
5. Трюк из #4 работал, я перешел на GCC: трюк работает, но появилась куча (здесь не печатное слово) warnings:
Как погасить этот тип предупреждения пока не знаю.
П>С> _scorpi, я хотел бы с Вами связаться по прайвед вопросу (проконсультироватся относительно японских ножей), но у Вас все контакты закрыты (только для друзей), так что если Вас не затруднит пошлите мне ЕМаил

2. Я делаю serializing, то есть пишу/читаю в стрим, файл и т.д. поля не обязательно в том же порядке как они представленны в структуре, так что алигмент меня не интересует, как и их offset в самой струтуре, а не оффсет в streame.
3. Проблема была подсчитать сумму sizeof_ов не в ран-тайме, как у Вас, а в compilation time и назначить е╦ статик переменной.
4. Кстати, трюк с offsetof помогает для проблемы #3. То есть,
st_Offset_Of_Field3 = sizeof(((MyClass*)0)->m_field1) + sizeof((((MyClass*)0)->m_field2);
и обращаюсь из статик контекста к ВРОДЕ БЫ статик переменным.
5. Трюк из #4 работал, я перешел на GCC: трюк работает, но появилась куча (здесь не печатное слово) warnings:
В ответ на:
warning: invalid access to non-static data member `SatelliteChannel_Tag::m_enPolarization' of NULL object
warning: (perhaps the `offsetof' macro was used incorrectly)
warning: invalid access to non-static data member `SatelliteChannel_Tag::m_enPolarization' of NULL object
warning: (perhaps the `offsetof' macro was used incorrectly)
Как погасить этот тип предупреждения пока не знаю.

П>С> _scorpi, я хотел бы с Вами связаться по прайвед вопросу (проконсультироватся относительно японских ножей), но у Вас все контакты закрыты (только для друзей), так что если Вас не затруднит пошлите мне ЕМаил