logo
Подбельский Фомин_Программирование на языке СИ_

Прагмы.

Прагмы. Директива

#pragma последовательность _лексем

определяет действия, зависящие от конкретной реализации компилятора. Например, в некоторые компиляторы входит вариант этой директивы для извещения компилятора о наличии в тексте программы команд на языке ассемблера.

Возможности команды #pragma могут быть весьма разнообразными и важными. Стандарта для них не существует. Если конкретный препроцессор встречает прагму, которая ему неизвестна, он ее просто игнорирует как пустую директиву. В некоторых реализациях включена прагма

#pragma pack(n)

где n может быть 1, 2 или 4.

Прагма "pack" позволяет влиять на упаковку смежных элементов в структурах и объединениях (см. гл. 6).

Соглашение может быть таким:

pack(l) - выравнивание элементов по границам байтов;

pack(2) - выравнивание элементов по границам слов;

pack(4) - выравнивание элементов по границам двойных слов.

В некоторые компиляторы включены прагмы, позволяющие изменять способ передачи параметров функциям, порядок помещения параметров в стек и т.д.