| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > struct str{ char a; ULONG b;}; |
| Автор: MoZy 3.9.2006, 19:41 |
| Привет! Кто-нибудь объяснит такую прелесть? ЗЫ у меня лонг == 4 байта, но не в этом суть. |
| Автор: Void 3.9.2006, 19:47 |
| Ключевое слово: alignment (выравнивание). Вкратце, с целью обеспечить эффективность, компилятор выравнивает типы по 4- или 8-байтным границам (на некоторых платформах это даже необходимость). |
| Автор: MoZy 3.9.2006, 20:48 |
| Void, это типа union'а? так это же не больно экономно в плане траффика... хотя ладно, пусть все будет 4 байта Спасибо. |
| Автор: Void 3.9.2006, 21:12 |
Нет. Вот http://en.wikipedia.org/wiki/Data_structure_alignment, к примеру, написано. Если ты собрался эту структуру передавать по сети, или есть фиксированный бинарный формат, которому надо следовать, то практически в любом компиляторе есть опции или директивы #pragma, позовляющие отключить выравнивание. |
| Автор: Rickert 4.9.2006, 18:06 |
| #pragma pack() См. MSDN. |