В C99 есть три стандартных прагмы:
#pragma STDC FP_CONTRACT on-off-switch
#pragma STDC FENV_ACCESS on-off-switch
#pragma STDC CX_LIMITED_RANGE on-off-switch
Где «вкл-выкл» один из
ВКЛ, ВЫКЛ, ПО УМОЛЧАНИЮ.
Они могут быть использованы во время компиляции для изменения поведения компилятора загадочными способами (они связаны с поведением C99 с плавающей запятой). Стандарт резервирует STDC для стандартных прагм; другие люди могут использовать все, что им нравится.
Есть и нестандартные прагмы - как указал Самуэль Клатчко.
По сути, это способ заставить компилятор выполнять нестандартные операции в нестандартном режиме. Одним из примеров является «#pragma pack
», что означает, что структуры создаются без заполнения между элементами, даже если это означает, что доступ к этим элементам будет неоптимальным (предположительно, пространство важнее времени). Это не особенно хорошая идея (хотя те, кто ее использует, будут возражать против этого); но это общепринятое требование, поэтому компиляторы часто его поддерживают.
Я программировал на C - о, 25 лет и немного, чтобы сэкономить. Мне не нужно было использовать прагму один раз. Я играл с ним пару раз, но никогда не нуждался в этом. Может быть, мне повезло.