Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под *nix > C++ на Unix
Перезагрузить страницу Как исправить #pragma pack
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Kosta Kosta вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.01.2006
По умолчанию Как исправить #pragma pack - 23.04.2008, 12:49

Привет всем.
вот в крации кусок кода
Код:
#pragma pack(push,8)
struct qwer
{
     .....
}
#pragma pack(pop)
получается фигота какая-то, у одного поля смешение относительно начала структуры 692. Оно не делится на 8, почему не округлил до 696????
Ответить с цитированием
  (#2 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 23.04.2008, 22:46

Прагма "pack" задает правило упаковки, т.е. pack(2) говорит, что не надо стараться выравнивать более, чем на 2 байта. Минимальная граница на выравнивание задается __attribute__ ((aligned (n)), примененному к определенному полю структуры:

Код:
#include <stddef.h>
#include <stdio.h>

struct foo
{
  char c;
  int x  __attribute__ ((packed));
  char d  __attribute__ ((aligned (8)));
  char e  __attribute__ ((aligned (8)));
};

int
main ()
{
#define PO(name) printf ("%s: %zd\n", #name, offsetof (struct foo, name));
  PO(c);
  PO(x);
  PO(d);
  PO(e);
#undef PO
  return 0;
}
печатает
Код:
c: 0
x: 1
d: 8
e: 16
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
K-Lite Codec Pack Апполо Любые вопросы от новичков 10 03.02.2011 23:17
Как работает метод pack imported_s_corp Java 2 09.08.2010 12:34
Service pack 3(Где можно скачать?) Deuce_Crime Windows XP 1 18.07.2010 12:18
Как в ХР удалить Service Pack 3? pponina Любые вопросы от новичков 14 28.12.2008 17:12
Service pack 3 ЧайниГ Софт и программы 25 20.07.2008 15:07
Service Pack 1 for Vista x64. Stef PRO Windows Vista 2 11.04.2008 10:46
Директива препроцесора #pragma na_tanke Вопросы начинающих программистов 10 17.12.2007 01:32
Значение команды pragma John Maison Visual C++ 3 05.08.2005 14:03
Использование директивы #pragma asm Regbist Assembler 0 01.07.2005 13:24
Для чего нужна директива pragma pack imported_Andreas Visual C++ 5 26.11.2004 12:42
VFP 8,0 команда Pack не работает sstogigla Другие СУБД 0 07.06.2004 02:23



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов