Страница 37 из 56
Директива pragma (ANSI Си 3.8.6)
-----------------------------------------------------------------
Турбо Си поддерживает директиву #pragma, которая (как и
error), неясно определяется в стандарте ANSI. Ее целью является
разрешить специализированные директивы по форме:
#pragma
----------------------------------------------------------------
Ради завершенности, ANSI-стандарт и Турбо Си опознают пустую
директиву, состоящую из строки со знаком #. Эта директива всегда
игнорируется.
Встроенные макроимена (ANSI Си 3.8.8)
----------------------------------------------------------------
ANSI стандарт требует чтобы в реализации было 5 встроенных
макросов. Турбо Си применяет все 5. Отметим, что каждый из них
начинается и оканчивается символами подчеркивания (__).
_LINE_ Номер обрабатываемой строки исходной программы - десятич-
ная константа. Первая строка исходного файла определена
как 1.
_FILE_ Имя обрабатываемого исходного файла - строка символов.
Данное макроопределение изменяется всякий раз, при обра-
ботке компилятором директивы #include или директивы #line,
или по окончании включаемого файла.
_DATE_ Дата начала обработки текущего исходного файла - строка
символов.
Каждое вхождение _DATE_ в заданном файле гарантирует одно
значение, независимо от продолжительности обработки. Дата
имеет формат mmm dd yyyy, где mmm - месяц (Jan, Feb и
т.д.), dd - число текущего месяца (1...31; в первой пози-
ции dd ставится пробел, если число меньше 10), yyyy - год
(1988, 1989 и т.д.).
_TIME_ Время начала обработки текущего исходного файла препроцес-
сором - строка символов.
Каждое вхождение _TIME_ в заданном файле гарантирует одно
значение, независимо от продолжительности обработки. Время
имеет формат hh:mm:ss, где hh - час (00...23), mm - минуты
(00...59), ss - секунды (00...59).
_STDC_ Константа, равная 1, если вы компилируете с (-A) флагом
- 307,308 -
(ANSI keywords only...ON), устанавливающим совместимость с
ANSI стандартом; иначе макроопределение не определено.
Встроенные макросы Турбо Си
-----------------------------------------------------------------
Для вашего использования препроцессор Турбо Си определяет
несколько дополнительных макросов. Также, как для макросов, пред-
писанных стандартом ANSI, каждый из них начинается и оканчивается
двумя символами подчеркивания.
_TURBOC_ Выдает номер текущей версии Турбо Си - шеснадцатиричная
константа. Версия 1.0 представляется как 0x0100; версия
1.2 - как 0x0102 и т.д.
_PASCAL_ Определяет наличие флага -p; устанавливается в целую
константу, равную 1, если используется флаг -p; иначе
не определяется.
_MSDOS_ Целая константа, равная 1, для всех компиляторов
_CDECL_ Сигнализирует о том, что флаг -p не использовался
(Calling convention...C); устанавливает целую констан-
ту, равную 1, если флаг -p не использовался; иначе не
определяется.
- 309,310 -
Следующие 6 макросов зависят от выбранной для компиляции мо-
дели памяти. Для заданной компиляции определяется только одна из
них; остальные (по-определению) не определяются. Например, если
вы компилируете с малой моделью, то определяется _SMALL_, а ос-
тальные - нет; поэтому директива #if defined(_SMALL_) будет иметь
значение true (истина), в то время как #if defined(_HUGE_) (или
любая другая) будет иметь значение false (ложь). Действительное