Является ли препроцессор IDE только функцией? - PullRequest
0 голосов
/ 01 мая 2018

Я пытался провести свое исследование, но не смог найти, откуда на самом деле берутся препроцессоры - являются ли они частью IDE (то есть каждая IDE имеет свою собственную реализацию), автономными программами или частью компиляторов?

Если они стали частью современных компиляторов, я думаю, что исторически так не было. Как это работало тогда?

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Самая ранняя работа над языком, которая через несколько лет получит имя "C" , началась в 1969 на основе языка BCPL . Препроцессор ожил в 1972 году .

C в то время все еще находился в процессе разработки, поэтому мы можем сказать, что препроцессор существовал с самого C. Никогда не было компилятора C без препроцессора. . C ++ ожил после C, и с самого начала у него был препроцессор.

Неважно, если препроцессор был отдельным исполняемым файлом, чем компилятор, но обычно он является частью компилятора. И никаких IDE в то время не было.


Вот ссылка , где вы можете прочитать больше. Это часть про препроцессор:

Многие другие изменения произошли в 1972-3 годах, но самым важным было введение препроцессора , частично по настоянию Алана Снайдера [Snyder 74], но также и в признание полезности механизмов включения файлов, доступных в BCPL и PL / I. Его оригинальная версия была чрезвычайно простой и содержала только включенные файлы и простые замены строк: #include и #define макросов без параметров. Вскоре после этого он был расширен, главным образом Майком Леском, а затем Джоном Рейзером, для включения макросов с аргументами и условной компиляцией. Препроцессор изначально считался необязательным дополнением к самому языку. Действительно, в течение нескольких лет он даже не вызывался, если исходная программа не содержала специального сигнала в начале. Такое отношение сохранялось и объясняет как неполную интеграцию синтаксиса препроцессора с остальным языком, так и неточность его описания в ранних справочных руководствах.

0 голосов

Нет, препроцессоры являются частью компилятора. Если вы скомпилируете из консоли (то есть с помощью gcc или другого компилятора напрямую), предварительная обработка все равно будет работать.

Предварительная обработка - это настолько мощный инструмент, что я считаю, что он всегда был частью компилятора. Или, если некоторым ранним компиляторам не хватало этой функции - ну, нужно было выполнять работу препроцессора вручную.

...