Опции и настройки компилятора

Прагмы

Предварительное объевления объектов

@__PRAGMA_DECLARE__

    @__PRAGMA_DECLARE__( func(arg) );

Импорт нативной функции / переменной

@__PRAGMA_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')

Управление макросами

@__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__