Директива #pragma pack надає членам агрегатів вирівнювання в 1 байт. Коли #pragma pack застосовується до агрегату з елементом vector4double, компілятор генерує повідомлення про серйозну помилку.
У C використовується директива #pragma спеціального призначення щоб увімкнути або вимкнути деякі функції. #pragma також дозволяє нам надати деяку додаткову інформацію або інструкції компілятору. Це залежить від компілятора, тобто поведінка директиви pragma відрізняється від компілятора до компілятора.
#pragma pack(push[,n]) переміщує поточне налаштування вирівнювання у внутрішній стек, а потім за бажанням встановлює нове вирівнювання. #pragma pack(pop) відновлює налаштування вирівнювання до того, що було збережено у верхній частині внутрішнього стеку (і видаляє цей запис стека).
Прагма DATA_SECTION виділяє простір для символу в C або наступного символу, оголошеного в C++, у розділі під назвою назва розділу. Синтаксис прагми в C такий: #pragma DATA_SECTION (символ, «назва розділу»)
Функція упаковки перетворює значення в послідовність байтів, що містить представлення відповідно до заданої специфікації, так званий аргумент "шаблон". unpack — це зворотний процес, який отримує деякі значення з вмісту рядка байтів.
Директива #pragma pack змінює поточне правило вирівнювання лише для членів структур, чиї оголошення слідують за директивою. Це не впливає безпосередньо на вирівнювання конструкції, але, впливаючи на вирівнювання елементів конструкції, воно може вплинути на вирівнювання всієї структури.