Далее обсуждаются следующие темы:
Ниже приведены ключевые слова зарезервированные языком 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 резервируют следующие ключевые слова:
__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
.