Опции и настройки компилятора
Прагмы
Предварительное объевления объектов
@__PRAGMA_DECLARE__
⚠️ НЕ РЕАЛИЗОВАНО: прагма @__PRAGMA_DECLARE__ в текущей версии не существует (см. список поддерживаемых @__PRAGMA_* в src/syntax/parser.cpp)
@__PRAGMA_DECLARE__( func(arg) );
Импорт нативной функции / переменной
@__PRAGMA_NATIVE__
⚠️ НЕ РЕАЛИЗОВАНО: прагма @__PRAGMA_NATIVE__ в текущей версии не существует; импорт нативных объектов выполняется через @extern/@forward или `name(...):T := %native...` (см. docs/types/native)
// import native int printf(char *format, ...)
@__PRAGMA_NATIVE__( printf(format:FmtChar, ...):Int32 );
Управление диагностикой компилятора
@__PRAGMA_DIAG__ -
@__PRAGMA_DIAG__(push)
@__PRAGMA_DIAG__(ignored, "-Wundef")
@__PRAGMA_DIAG__(warning, "-Wformat" , "-Wundef", "-Wuninitialized")
@__PRAGMA_DIAG__(error, "-Wuninitialized")
@__PRAGMA_DIAG__(pop)
@__PRAGMA_MESSAGE__
#pragma message "Compiling " __FILE__ "..."
@__PRAGMA_MESSAGE__("Compiling ", __FILE__, "...")
#define DO_PRAGMA(x) _Pragma (#x)
#define TODO(x) DO_PRAGMA(message ("TODO - " #x))
@@TODO( ... )@@ := @__PRAGMA_MESSAGE__("TODO - ", @#...)
@TODO(Remember to fix this) # note: TODO - Remember to fix this
@__PRAGMA_WARNING__ @__PRAGMA_ERROR__
- @__PRAGMA_LOCATION__
// #line 303 "location.hh"
// Prototype - @__PRAGMA_LOCATION__( pop )
// Prototype - @__PRAGMA_LOCATION__( push ) or @__PRAGMA_LOCATION__( push, 'filename') or @__PRAGMA_LOCATION__( push, 'filename', line)
// Prototype - @__PRAGMA_LOCATION__( line ) or @__PRAGMA_LOCATION__( line, 'filename')
Управление опциями компилятора
@__OPTION__, @__OPTION_PUSH__, @__OPTION_POP__
Макросы для временного изменения severity диагностических опций компилятора из исходного кода:
@__OPTION_PUSH__;
@__OPTION__("macro-redefined", "ignore");
# ... определения макросов, переопределения разрешены ...
@__OPTION_POP__;
@__OPTION_PUSH__— сохраняет текущий набор опций.@__OPTION__("<имя_опции>", "<значение>")— устанавливает severity опции. Значение — одно из:fatal,error,warning,remark,note,ignore.@__OPTION_POP__— восстанавливает предыдущий набор опций.
Опция macro-redefined управляет поведением при переопределении макроса: по умолчанию fatal (запрещено), ignore — разрешает переопределение без диагностики.
Управление макросами
@__PRAGMA_EXPECTED__ - Следующий символ должен быть одним из списка
@__PRAGMA_EXPECTED__( @\ {, @\ {*, @\ {+ )
{ }
@__PRAGMA_EXPECTED__( @\ {, @\ {*, @\ {+)
{+ +}
@__PRAGMA_UNEXPECTED__ - Запретить использование перечисленных символов
@__PRAGMA_UNEXPECTED__( @\{, @\{*, @\{+)
{- -}
@__PRAGMA_UNEXPECTED__( @\{*, @\{+)
{ }
@__PRAGMA_NO_MACRO__ - Следующий символ не макрос
Аннотации
@__ANNOTATION_SET__
@__ANNOTATION_SET__(name)
@__ANNOTATION_SET__(name, "value")
@__ANNOTATION_SET__(name, 1)
@__ANNOTATION_IIF__
Не используется (заготовки на будущее)
@__PRAGMA_IGNORE__
static const char * ignore_space = "space";
static const char * ignore_indent = "indent";
static const char * ignore_comment = "comment";
static const char * ignore_crlf = "crlf";
-
@__PRAGMA_INDENT_BLOCK__
-
@__PRAGMA_MACRO__ -
-
@__PRAGMA_MACRO_COND__
-
@__PRAGMA_FINALIZE__