Содержание

Ключевые слова компилятора

Далее обсуждаются следующие темы:

Стандартные ключевые слова

Ниже приведены ключевые слова зарезервированные языком C:

auto       double     int        struct
break      else       long       switch
case       enum       register   typedef
char       extern     return     union
const      float      short      unsigned
continue   for        signed     void
default    goto       sizeof     volatile
do         if         static     while

Ключевые слова Watcom C/16 и C/32

Кроме стандартных, компиляторы Watcom C/16 и C/32 резервируют следующие ключевые слова:

__based    __fortran   __near     __segment
__cdecl    __huge      _Packed    __segname
__export   __interrupt            __pascal
__self
__far      __loadds    __saveregs __syscall

Кроме того, компилятор Watcom C/32 резервирует следующие ключевые слова:

__far16    _Seg16      __stdcall

Ключевые слова __based, __segment, __segname и __self описаны в разделе Относительные указатели Watcom C/16 и C/32. Watcom C/16 и C/32 предоставляют предопределённое макро _based для совместимости с компилятором Microsoft C. Его можно использовать вместо __based. Watcom C/16 и C/32 предоставляют предопределённое макро _segment для совместимости с компилятором Microsoft C. Его можно использовать вместо __segment. Watcom C/16 и C/32 предоставляют предопределённое макро _segname для совместимости с компилятором Microsoft C. Его можно использовать вместо __segname. Watcom C/16 и C/32 предоставляют предопределённое макро _self для совместимости с компилятором Microsoft C. Его можно использовать вместо __self.

Ключевые слова __far, __huge и __near описаны в разделах Специальные типы указателей Watcom C/16 и Специальные типы указателей Watcom C/32. Watcom C/16 и C/32 предоставляют предопределённые макро far и _far для совместимости с компилятором Microsoft C. Watcom C/16 предоставляет предопределённое макро SOMDLINK для совместимости с компилятором Microsoft C. Они могут использоваться вместо __far. Watcom C/16 и C/32 предоставляют предопределённые макро huge и _huge для совместимости с компилятором Microsoft C. Их можно использовать вместо __huge. Watcom C/16 и C/32 предоставляют предопределённые макро near и _near для совместимости с компилятором Microsoft C. Их можно использовать вместо __near.

Ключевые слова __far16 и _Seg16 описаны в разделе Специальные типы указателей Watcom C/32. Watcom C/16 и C/32 предоставляют предопределённые макро _far16 и _Far16 для совместимости с компилятором Microsoft C. Их можно использовать вместо __far16.

Ключевое слово _Packed описано в разделе Структуры.

Ключевое слово __cdecl можно использовать при определении функции, оно означает, что соглашения о вызове функции те же, что используются в Microsoft C. Все параметры передаются через стек, а не через регистры. Это соглашение о вызове можно установить при помощи директивы #pragma. См. «User's Guide». Watcom C/16 и C/32 предоставляют предопределённые макро cdecl, _cdecl и _Cdecl для совместимости с компилятором Microsoft C. Watcom C/16 предоставляет предопределённое макро SOMLINK для совместимости с компилятором Microsoft C. Все эти макро можно использовать вместо __cdecl.

Ключевое слово __fortran можно использовать в определении функции, оно означает, что используются соглашения о вызове функции написанной на FORTRAN'е. По умолчанию это ключевое слово ничего не изменяет. Этим соглашением о вызове можно управлять при помощи директивы #pragma. См. «User's Guide». Watcom C/16 и C/32 предоставляют предопределённые макро fortran и _fortran для совместимости с компилятором Microsoft C. Их можно использовать вместо __fortran.

Ключевое слово __pascal можно использовать при определении функции, оно означает, что используются соглашения о вызове функции написанной на Pascal'е. Все параметры заносятся в стек, но в обратном порядке по отношению к __cdecl. Этим соглашением о вызове можно управлять при помощи директивы #pragma. См. «User's Guide». Watcom C/16 и C/32 предоставляют предопределённые макро pascal и _pascal для совместимости с компилятором Microsoft C. Их можно использовать вместо __pascal.

Ключевое слово __syscall можно использовать при определении функции, оно означает, что соглашения о вызове совместимы с OS/2 (версии 2.0 или выше). Этим соглашением о вызове можно управлять при помощи директивы #pragma. См. «User's Guide». Watcom C/16 и C/32 предоставляют предопределённые макро _syscall и _System для совместимости с компилятором Microsoft C. Watcom C/32 предоставляет предопределённые макро SOMLINK и SOMDLINK для совместимости с компилятором Microsoft C. Их можно использовать вместо __syscall.

Ключевое слово __syscall можно использовать при определении функции, оно означает, что соглашения о вызове совместимы с Win32. Этим соглашением о вызове можно управлять при помощи директивы #pragma. См. «User's Guide».

Ключевое слово __export можно использовать с объектами со статической продолжительностью хранения (глобальными объектами) и функциями, оно означает, что объект или функция является объектом или функцией в библиотеки динамической компоновки (DLL) в OS/2 или Microsoft Windows. Объект или функция должны быть декларированы как внешние (с использованием ключевого слова extern). Кроме того, любые функции обратного вызова, чей адрес передаётся Windows (и которые будет вызывать Windows), должны быть определены с ключевым словом __export, иначе вызов приведёт к непредсказуемым результатам. Ключевое слово __export можно опустить, если объект или функция экспортируются при помощи опции линкера. См. «Watcom Linker User's Guide». Watcom C/16 и C/32 предоставляют предопределённое макро _export для совместимости с компилятором Microsoft C. Его можно использовать вместо __export.

Ключевое слово __interrupt можно использовать при определении функции, которая обрабатывает прерывание. Все регистры сохраняются перед началом выполнения функции и восстанавливаются перед возвратом. Машинная инструкция возврата заменяется на iret (interrupt return, возврат из прерывания). Функцию написанную с использованием __interrupt можно использовать для перехвата вектора прерывания при помощи библиотечной функции _dos_setvect. Watcom C/16 и C/32 предоставляют предопределённые макро interrupt и _interrupt для совместимости с компилятором Microsoft C. Их можно использовать вместо __interrupt.

Ключевое слово __loadds можно использовать с функциями, оно заставляет компилятор генерировать код, который будет загружать в регистр DS сегмент данных по умолчанию (DGROUP), и поэтому все ближние указатели будут ссылаться на этот сегмент. Это ключевое слово обычно используется с функциями написанными для библиотек динамической компоновки (DLL) Windows и OS/2. Watcom C/16 и C/32 предоставляют предопределённое макро _loadds для совместимости с компилятором Microsoft C. Его можно использовать вместо __loadds.

Ключевое слово __saveregs можно использовать с функциями. Оно предоставлено для совместимости с Microsoft C и в Watcom C/16 и C/32 не производит никакого эффекта. Watcom C/16 и C/32 предоставляют предопределённое макро _saveregs для совместимости с компилятором Microsoft C. Его можно использовать вместо __saveregs.