Четвертый BORLAND С++ и его окружение

Предопределенные макрокоманды


Borland C++ имеет следующие предопределенные глобальные

идентификаторы. За исключением __cplusplus и _WINDOWS, каждый из

них и начинается, и заканчивается двумя символами подчеркивания

(__). Эти макрокоманды также называют именованными константами.

__BCOPT__

Эта макрокоманда определена (как строка "1") в любом компиляторе, имеющем оптимизатор.
__BCPLUSPLUS__

Эта макрокоманда специфична для семейства компиляторов

Borland Си и C++. Она определена только для компиляции с помощью

C++. Если вы выбрали компиляцию С++, то данная макрокоманда определена как шестнадцатиричная константа 0x0320. Это численное значение в последующих версиях будет увеличено.

__BORLANDC__

Эта макрокоманда специфична для семейства компиляторов



Borland Си и C++. Она определена как шестнадцатиричная константа

0x0400. Это численное значение в последующих версиях будет увеличено.

__CDECL__

Данная макрокоманда специфична для компилятоpов Borland Си и

C++. Она сообщает о том, что флаг соглашения по вызову языка Паскаль не использовались. Она устанавливается равной целочисленной

константе 1, если вызов не использовался; в противном случае она

не определена.

Следующие символические имена определяются согласно выбранной во время компиляции модели памяти:


__COMPACT__
__MEDIUM__


__HUGE__
__SMALL__


__LARGE__
__TINY__

Для конкретной компиляции определенным является только одна

из этих макрокоманд. Прочие по определению не определены. Например, если при компиляции выбрана малая модель памяти (small), то

макрокоманда __SMALL__ определена, а остальные не определены, поэтому директива:

#if defined(__SMALL__)

даст значение True (истина), а:

#if defined(__HUGE__)

(либо любая другая из оставшихся) даст значение False (ложь).

Фактическое значение любой из этих макрокоманд, когда она определена, равно 1.

__cplusplus

Данная макрокоманда в pежиме C++ имеет значение 1; в пpотивном случае, она не опpеделена. Она позволяет написать модуль, который в некоторых случаях будет компилироваться в Си, а в некоторых - в С++. Использование условных директив компиляции позволяет

управлять тем, какие части программы для Си и С++ будут включаться в компиляцию.

__DATE__

Данная макрокоманда дает дату начала обработки препроцессором данного исходного файла (в виде строкового литерала). Каждое

включение __DATE__ в данный файл дает одно и то же значение, независимо от того, сколько времени продолжается обработка файла

препроцессором. Дата имеет форму mmmddyyyy, где mmm это месяц

(Jan, Feb и т.д.), dd равно числу месяца (от 1 до 31, причем если

это число меньше 10, то первый символ d равен пробелу), а yyyy это год (1990, 1991 и т.д.)

__DLL__

Эта макрокоманда специфична для семейства компиляторов

Borland Си и С++. Она определена как 1, если компилятоp командной

стpоки выполняет компиляцию модуля с параметром -WD или в меню

O|C|Entry/Exit Code выбиpается селективная кнопка Windows DDL All

Functions Exportable для генерации кода библиотек DLL Windows. В

противном случае макрокоманда не определена.

__FILE__

Данная макрокоманда дает имя текущего обрабатываемого препроцессором исходного файла (в виде строкового литерала). Когда

препроцессор обрабатывает директиву #include или #line, либо при

завершении обработки включаемого файла, данная макрокоманда соответствующим образом меняет свое значение.

__LINE__

Данная макрокоманда дает количество обработанных препроцессором к данному моменту строк текущего исходного файла. Обычно

первая строка исходного файла определяется с номером 1, хотя на

это может повлиять директива #line. Информацию о директиве #line

см. выше.

__MSDOS__

Данная макрокоманда специфична для Borland Си и C++. Он дает

целочисленную константу 1 для всех случаев компиляции.

__MT__

Эта макрокоманда может использоваться только 32-разрядными

компиляторами. Если используется параметр -WM (он задает компоновку мультинитевой библиотеки), эта макрокоманда определена как 1.

__OVERLAY__

Данная макрокоманда специфична для Borland Cи и С++. Она

предопределена как 1, если модуль компилируется с параметром -Y

(включена поддержка оверлейных структур). Если оверлейные структуры не поддерживаются, то данная макрокоманда не определена.

__PASCAL__

Данная макрокоманда специфична для Borland Cи и С++. Она

сообщает о том, что был использован флаг -p или из меню

O|C|C|Exit/Entry была выбpана команда Pascal calling conventions.

В этом случае макрокоманда установлена равной целочисленной

константе 1; в противном случае она не определена.

__STDC__

Данная макрокоманда определена равной константе 1, если компиляция выполняется при установленном флаге совместимости со

стандаpтом ANSI (-A) или выбpанной из меню Source Options селективной кнопке ANSI. В противном случае макрокоманда не определена.

__TCPLUSPLUS__

Данная макрокоманда специфична для Borland Cи и С++. Она определена только для компиляции С++. Если вы выбрали компиляцию

С++, она определена как шестнадцатиричная константа 0x0320.

__TEMPLATES__

Данная макрокоманда специфична для Borland Cи и С++. Она определена как 1 для файлов С++ (это означает, что C++ поддеpживает

шаблоны); в пpотивном случае, она не опpеделена.

__TIME__

Данная макрокоманда дает время начала обработки препроцессором текущего исходного файла (в виде строкового литерала).
<
Как и в случае макрокоманды __DATE__, каждое включение

__TIME__ будет содержать одно и то же значение, независимо от того, сколько времени продолжалась обработка файла. Он имеет формат

hh:vv:ss, где hh - это часы (от 00 до 23), mm - это минуты (от 00

до 59), а ss - это секунды (от 00 до 59).



__TLC__



Эта макрокоманда всегда имеет значение True при использовании 32-битового компилятора. См. описание ключевого слова __thread.

__TURBOC__



Данная макрокоманда специфична для Borland Cи и С++. Она

опpеделена как шестнадцатиричная константа 0x0410. Это числовое

значение в последующих версиях будет увеличено.

__WIN32__



Для 32-разрядного компилятора эта макрокоманда всегда определена. Она определена для консольных приложений и приложений

GUI.

_Windows



Указывает на то, что генеpиpуется код, специфичный для Windows. Данная макрокоманда определена, если вы компилируете модуль

с любым включенным параметром -W (генерация прикладной программы

для Windows). Если ни один из этих параметров не включен, то данная макрокоманда не определена.

Содержание раздела