Прагмы специфичны для используемого компилятора и платформы.
Поэтому лучше всего взглянуть на документацию компилятора.
Для компиляторов IBM, например:
Многие директивы прагмы могут быть указаны в любом
указать в исходном коде в
блок компиляции; другие должны быть
указано перед любыми другими директивами
или заявления исходного кода. в
индивидуальные описания для каждого
прагма, раздел «Использование» описывает
какие-либо ограничения на прагму
размещение.
В общем, если указать прагму
директива перед любым кодом в вашем
исходная программа, это относится к
весь блок компиляции, включая любой
заголовочные файлы, которые включены. Для
директива, которая может появиться в любом месте
ваш исходный код, он применяется из
точка, в которой она указана, до
конец блока компиляции.
Вы можете дополнительно ограничить сферу
применение прагмы с помощью
дополнительные пары прагмы
директивы вокруг выбранного раздела
кода. Например, используя #pragma
параметры источника и параметры #pragma
следующие директивы nosource
просит, чтобы только выбранные части
вашего исходного кода будет включен в
ваш список компиляторов:
#pragma options source
/* Source code between the source and nosource pragma
options is included in the compiler listing */
#pragma options nosource
Многие прагмы предоставляют "pop" или "reset"
подопции, которые позволяют включить
и отключите настройки прагмы в
стековая мода; примеры этих
предоставляются в соответствующей прагме
описание.
Как правило, прагма должна действовать сразу после ее объявления, независимо от того, из какого заголовка она идет, до конца единицы перевода. Тем не менее, есть некоторые прагмы, которые влияют на всю программу. Например, специфическая для Microsoft прагма «link», которая добавляет зависимость от какой-либо библиотеки в модуль перевода и всех его «пользователей».