По определению существует несколько фаз препроцессорной обработки.В конкретной реализации фазы могут сливаться, но результат все равнодолжен быть таким, как будто были выполнены все фазы. Перечислим их. При необходимости символы, зависящие от системы символы, обозначающиеконец строки, заменяются на стандартный символ конца строки. Аналогичнойзамене подлежат все зависящие от системы символы. Определенныепоследовательности символов (триграфы) заменяются на эквивалентныйим отдельный символ ($$R.16.2). Удаляются все такие пары символов: обратная дробная черта, следующийза ней символ конца строки. В результате будут слиты строки входноготекста, из которых была удалена эта пара. Входной текст разбивается на лексемы препроцессора и последовательностьобобщенных пробелов. Каждый комментарий заменяется на один пробел.Входной текст не должен кончаться посреди лексемы или комментария. Выполняются команды препроцессора, и производятся макроподстановки($$R.16.3, $$R.16.4, $$R.16.5, $$R.16.6, $$R.16.7 и $$R.16.8). В символьных константах и строках литералов комбинации специальныхсимволов заменяются на свои эквиваленты ($$R.2.5.2). Сливаются соседние строки литералов. Результат препроцессорной обработки подвергается синтаксическомуи семантическому анализу, транслируется, а затем связывается снеобходимыми библиотеками и другими программами.