756_____________________________________________Глава 13 <

ветствующие соглашению С, могут воспринимать список параметров переменной
длины. Если вы установили эту опцию, то функции, использующие другие согла-
шения, можете объявлять ключевыми словами _pascal, _fastcall, _stdcall.

Опция Pascal соответствует соглашениям языка Pascal — в частности, опреде-
ляет перевод идентификаторов к верхнему регистру. Включение этой опции экви-
валентно объявлению всех функций с ключевым словом _pascal. В результате
вызов функций обычно короче и производится быстрее, чем при опции С. В функ-
ции должен передаваться список параметров указанной длины и типов. Если вы
установили эту опцию, то функции, использующие другие соглашения, можете
объявлять ключевыми словами _cdecl, _fastcall, _stdcall.

Опция Register (J) соответствует соглашениям передачи параметров Register.
Включение этой опции эквивалентно объявлению всех функций с ключевым сло-
вом __fastcall. В результате, где возможно, параметры будут передаваться в реги-
стры. Если вы установили эту опцию, то функции, использующие другие соглаше-
ния, можете объявлять ключевыми словами _cdecl, _pascal, _stdcall.

Опция Standard Call соответствует соглашениям передачи параметров Stdcall.
Включение этой опции эквивалентно объявлению всех функций с ключевым сло-
вом _stdcall. В функции должен передаваться список параметров указанной дли-
ны и типов. Если вы установили эту опцию, то функции, использующие другие со-
глашения, можете объявлять ключевыми словами _cdecl, _pascal, _fastcall.

Группа опций Register Variables определяет, могут ли локальные переменные во
время выполнения храниться в системных регистрах. Опция None (включена по
умолчанию) запрещает хранение локальных переменных в регистрах, даже если
вы используете для них ключевое слово register. Опция Automatic разрешает ком-
пилятору перемещать переменные в регистры, даже если вы не указали ключевого
слова register. Опция Register Keyword разрешает использовать регистр для пере-
менной, только если она объявлена с ключевым словом register и ее размещение в
регистре возможно. Опции Automatic и Register Keyword обеспечивают более быст-
рое выполнение, оптимизируя использование регистров, но могут затруднять от-
ладку.

Опции группы Output определяют, надо ли включать в информационный файл
Makefile информацию о генерируемых объектных модулях (опция Autodependency
Information) и надо ли предварять имена функций символом подчеркивания (опция
Generate Underscores). По умолчанию обе опции включены.

Опции группы Floating Point позволяют оптимизировать производительность и
точность вычислений с плавающей запятой. По умолчанию все опции этой группы
выключены. Опция None запрещает использование плавающей запятой. При этом
нельзя использовать библиотеки функций с плавающей запятой. Если вы все-таки
обратитесь в программе к вычислениям с плавающей запятой, вам будет выдана
ошибка компоновки. Опция Fast разрешает оптимизировать вычисления с плаваю-
щей запятой независимо от явного или неявного задания преобразований типов.
Если эта опция выключена, то компилятор придерживается стандарта ANSI для
преобразования типов. Включение этой опции может ускорить вычисления. Оп-
ция Correct Pentium FDIV flaw позволяет исправить ошибки деления с плавающей
запятой, которые были свойственны ранним кристаллам Pentium.

Опции группы Language Compliance определяют множество воспринимаемых
компилятором ключевых слов. Ключевые слова, не соответствующие установлен-
ному множеству, воспринимаются компилятором как обычные идентификаторы.

По умолчанию включена опция Borland, соответствующая расширению ключе-
вых слов, принятому в корпорации Inprise. Это расширение включает, в частности,
ключевые слова near, far, huge, asm, cdecl, pascal, interrupt, _export, _ds, _cs,
_ss, _es, псевдопеременные регистров (_АХ, _ВХ и т.д.). Если в вашем коде обна-
ружены синтаксические ошибки, связанные с непониманием компилятором клю-
чевых слов, проверьте прежде всего, включена ли опция Borland.