На этом шаге мы перечислим встроенные макроимена.
Существуют встроенные (заранее определенные) макроимена, доступные препроцессору во время обработки. Они позволяют получить следующую информацию (таблица 1):
| Десятичная константа - номер текущей обрабатываемой строки файла с программой C++. Принято, что номер первой строки исходного файла равен 1. | |
| Строка символов - имя компилируемого файла. Имя изменяется всякий раз, когда препроцессор встречает директиву #include с указанием имени файла. После окончания включения файла по команде #include восстанавливается предыдущее значение макроимени __FILE__. | |
| Строка символов в формате: "месяц число год", определяющая дату начала обработки исходного файла. | |
| Строка символов вида "часы:минуты:секунды", определяющая время начала обработки препроцессором текущего исходного файла. | |
| Константа, равная 1, если компилятор работает в соответствии с ANSI-стандартом. В противном случае значение макроимени не определено. Проект стандарта C++ предполагает, что наличие имени __STDC__ определяется реализацией. | |
| Имя, определенное равным 1 при компиляции программы на языке C++. В остальных случаях этот макрос не определен. | 
В конкретных реализациях набор предопределенных имен шире. Например, в препроцессор BC++ дополнительно включены (таблица 2):
| Имя, определенное равным 1, если в компиляторе имеется оптимизатор. | |
| Числовое значение соответствует версии компилятора. | |
| Идентифицирует порядок передачи параметров функциям, значение 1 соответствует порядку, принятому в языках C и C++ (в отличие от языка Pascal). | |
| Определено для 32-разрядного компилятора и установлено в 1 для программ консольного приложения. | |
| Соответствует работе в режиме Windows DLL. | |
| Равно 1 для 16-разрядных компиляторов BC++, устанавливается в 0 для 32-разрядного компилятора. | |
| Доступен только для 32-разрядного компилятора. | |
| Равно 1 в оверлейном режиме. | |
| Противоположен __CDECL__. | |
| Установлен в 1, если компилятор удовлетворяет стандарту ANSI. | |
| Числовое значение соответствует версии компилятора. | |
| Означает, что ВС++ поддерживает шаблоны. | |
| Определен как истинный для 32-разрядного компилятора. | |
| Числовое значение, равное 0х0400 для компилятора ВС++4.0. | |
| Означает генерацию кода для Windows. | |
| Определен для 32-разрядного компилятора и установлен в 1 для консольных приложений и GUI. | 
   
На следующем шаге мы начнем знакомиться со структурами.