Шаг 81.
Встроенные макроимена

    На этом шаге мы перечислим встроенные макроимена.

    Существуют встроенные (заранее определенные) макроимена, доступные препроцессору во время обработки. Они позволяют получить следующую информацию (таблица 1):

Таблица 1. Общие встроенные макроимена
Макрос
Назначение
__LINE__
Десятичная константа - номер текущей обрабатываемой строки файла с программой C++. Принято, что номер первой строки исходного файла равен 1.
__FILE__
Строка символов - имя компилируемого файла. Имя изменяется всякий раз, когда препроцессор встречает директиву #include с указанием имени файла. После окончания включения файла по команде #include восстанавливается предыдущее значение макроимени __FILE__.
__DATE__
Строка символов в формате: "месяц число год", определяющая дату начала обработки исходного файла.
__TIME__
Строка символов вида "часы:минуты:секунды", определяющая время начала обработки препроцессором текущего исходного файла.
__STDC__
Константа, равная 1, если компилятор работает в соответствии с ANSI-стандартом. В противном случае значение макроимени не определено. Проект стандарта C++ предполагает, что наличие имени __STDC__ определяется реализацией.
__cplusplus
Имя, определенное равным 1 при компиляции программы на языке C++. В остальных случаях этот макрос не определен.

    В конкретных реализациях набор предопределенных имен шире. Например, в препроцессор BC++ дополнительно включены (таблица 2):

Таблица 2. Дополнительные встроенные макроимена в BC++
Макрос
Назначение
__BCOPT__
Имя, определенное равным 1, если в компиляторе имеется оптимизатор.
__BCPLUSPLUS__
Числовое значение соответствует версии компилятора.
__CDECL__
Идентифицирует порядок передачи параметров функциям, значение 1 соответствует порядку, принятому в языках C и C++ (в отличие от языка Pascal).
__CONSOLE__
Определено для 32-разрядного компилятора и установлено в 1 для программ консольного приложения.
__DLL__
Соответствует работе в режиме Windows DLL.
__MSDOS__
Равно 1 для 16-разрядных компиляторов BC++, устанавливается в 0 для 32-разрядного компилятора.
__MT__
Доступен только для 32-разрядного компилятора.
__OVERLAY__
Равно 1 в оверлейном режиме.
__PASCAL__
Противоположен __CDECL__.
__STDC__
Установлен в 1, если компилятор удовлетворяет стандарту ANSI.
__TCPLUSPLUS__
Числовое значение соответствует версии компилятора.
__TEMPLATES__
Означает, что ВС++ поддерживает шаблоны.
__TLS__
Определен как истинный для 32-разрядного компилятора.
__TURBOC__
Числовое значение, равное 0х0400 для компилятора ВС++4.0.
__Windows__
Означает генерацию кода для Windows.
__WIN32__
Определен для 32-разрядного компилятора и установлен в 1 для консольных приложений и GUI.


    На следующем шаге мы начнем знакомиться со структурами.


Предыдущий шаг Содержание Следующий шаг