Поддерживаемые GNU директивы #pragma
====================================

В данном документе описываются только те директивы #pragma, которые позаимствованы у gcc. Директивы #pragma, описанные в каких-либо стандартах, описаны в статье :doc:`pragma_standard`. Собственные директивы #pragma и !dir$ описаны в статье :doc:`pragma_mcst`

Компилятор номинально совместим с gcc-9.3.0. Здесь мы перечислим ссылки на отдельные пункты из `документации по gcc-9.3.0 <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/>`_, посвящённые директивам #pragma, и описанием того, что из всего множества поддержано в lcc


* `6.62.9 Symbol-Renaming Pragmas <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Symbol-Renaming-Pragmas.html#Symbol-Renaming-Pragmas>`_

  | Поддержано

* `6.62.10 Structure-Layout Pragmas <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Structure-Layout-Pragmas.html#Structure-Layout-Pragmas>`_

  | Поддержано с ограничениями:
  | - Отсутствует поддержка ``#pragma ms_struct``
  | - Отсутствует поддержка ``#pragma scalar_storage_order``

* `6.62.11 Weak Pragmas <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Weak-Pragmas.html#Weak-Pragmas>`_

  | Поддержано

* `6.62.12 Diagnostic Pragmas <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas>`_

  | НЕ поддержано

* `6.62.13 Visibility Pragmas <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Visibility-Pragmas.html#Visibility-Pragmas>`_

  | Поддержано

* `6.62.14 Push/Pop Macro Pragmas <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Push_002fPop-Macro-Pragmas.html#Push_002fPop-Macro-Pragmas>`_

  | Поддержано

* `6.62.15 Function Specific Option Pragmas <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Function-Specific-Option-Pragmas.html#Function-Specific-Option-Pragmas>`_

  | Поддержано с ограничениями:
  | - Игнорируется ``#pragma GCC target``

* `6.62.16 Loop-Specific Pragmas <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Loop-Specific-Pragmas.html#Loop-Specific-Pragmas>`_

  | НЕ поддержано, т.к. имеются собственные аналоги

