Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual C++
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
19305 / 7159 / 533
Регистрация: 30.03.2009
Сообщений: 20,036
Записей в блоге: 30
28.11.2009, 15:55 0

Использование #pragma pack(push,1)... pack(pop)

28.11.2009, 15:55. Просмотров 45322. Ответов 51
Метки (Все метки)

Лучший ответ Сообщение было отмечено как решение

Решение

> выравнивание - 1 байт.

Стесняюсь спросить, и каким это образом ты проверил?

Добавлено через 2 минуты
И, собственно, не совсем понятно, при чём тут вообще выравнивание структуры, когда мы говорим о распределении полей в структуре?

C
1
2
3
4
5
6
7
8
9
10
11
#pragma pack (push, 1)
struct
{
  char f1;
  int f2;
  short f3;
} s;
#pragma pack (pop)
printf ("%d\n", ((char*)&s.f1) - (char*)&s);
printf ("%d\n", ((char*)&s.f2) - (char*)&s);
printf ("%d\n", ((char*)&s.f3) - (char*)&s);
Добавлено через 5 минут
Или, что более ближе к данной теме, вот такой пример:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma pack (push, 1)
struct s
{
  unsigned char f1;
  unsigned  int f2;
  unsigned  short f3;
};
#pragma pack (pop)
 
/* Этот буфер нам по сути дела заменяет файл */
char buff[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
                0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee };
struct s *p = (struct s*) buff;
 
printf ("%x\n", p->f1);
printf ("%x\n", p->f2);
printf ("%x\n", p->f3);
Печать для упакованной структуры

Код
11
55443322
7766
Печать для обычной структуры

Код
11
88776655
aa99


Вернуться к обсуждению:
Использование #pragma pack(push,1)... pack(pop)
6
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2009, 15:55

что такое #pragma once?
??????????

[c++, msvc] #pragma suppress warning
Всем привет. Вижал студия 2013. Рассмотрим код: ...

IAR EWARM, непонятное поведение data pragma pack
EWARM 6.50.6, понадобилось упаковать класс, чтобы красиво и грамотно гонять его...

0
Другие темы раздела
Visual C++ Распространение ПО (deployment) http://www.cyberforum.ru/visual-cpp/thread67854.html
Как по мне, чем дальше, тем больше головной боли с установкой ПО на другой компьютер. Когда-то баловался с Visual Basic 6. Создание инсталляции средствами IDE было мучением, но я разобрался, как...
Visual C++ while плиз помогите! написать прогу условие ИСПОЛЬЗУВАТЬ WHILE=-O Написать програму каторая переводит число нее болие 255 в двойкову систему вичисление меодом отнимание.Програма должна... http://www.cyberforum.ru/visual-cpp/thread67779.html
Visual C++ Что означает это ошибка?
VS C++ 6. Что означет эта ошибка? я создаю элементарную программу, в которой не может быть ошибок, а компилятор всё равно выдаёт мне эту ошибку. Помогите разобраться... fatal error C1010: unexpected...
Свой ActiveX + TabControl + FlexGrid Visual C++
Всем привет! Прошу всех кто может помочь мне вот в каком вопросе. Создал свой ActiveX на VC++6.0 на основе стандартного компонента Tab Control (SysTabControl32), создал пару вкладок-диалогов, все...
Visual C++ символ конца строки и буква "я" http://www.cyberforum.ru/visual-cpp/thread67522.html
Я пишу следующую программу : она должна открывать файл, являющийся программой С++, удалять из нее все комментарии и результат записывать в новый файл. Собственно, программу я написал, но вот...
Visual C++ Чтение группы байтов из файла Необходимо прочитать 4 байта из двоичного файла. Открываю файл и ставлю указатель в нужное место (если я всё правильно понимаю), как дальше прочитать 4 байта и вывести их на экран (4 байта это число... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru