Непейвода Н.Н. Программирование. Раздел 1

Непейвода Н.Н. Программирование. Страница 73

Пример 2.2,3. Стандарт языка С предписывает, что системы программи­рования на нем должны предусматривать специальный инструмент для об­работки программных текстов, который называется препроцессором. Пре­процессор делает массу полезных преобразований. Как уже упоминалось, он берет на себя решение задачи подключения к программе внешних (биб­лиотечных) файлов (см. 1.2), с его помощью можно скрывать утомительные детали программирования, достигать ряда нужных эффектов, не преду смот­ренных в основных средствах языка (например, именованные константы — см. 1.5.1). Постулируется, что программа на языке С есть то, что получается после работы препроцессора с текстом (разумеется, если результат такой работы окажется корректным). Следовательно, использование препроцессо­ра — синтаксическая прагматика языка. Но это противоречит практике рабо­ты программиста: он просто не в состоянии написать содержательную про­грамму, которая могла бы выполняться без использования при своей транс­ляции препроцессора. Если при программировании на С ограничиваются употреблением препроцессорных команд подключения файлов определений и определения констант, то работа препроцессора не очень затрудняет пони­мание получившейся программы. Но когда применяются, к примеру, услов­ные препроцессорные конструкции, возможно появление программхимер, зрительно воспринимаемый текст которых дезинформирует относительно их реальной структуры.

Пусть написано

Внешне это выглядит как то, что действие выполняется, если X ^ 0, но первый макрос раскрывается как

Даже сам автор данной программы через некоторое время не поймет, почему же она у него так себя ведет. Конец примера 2.2.3.

Как это ни странно, подобные построения используются в практике про­граммирования на С: они применяются, чтобы в одном общем тексте за­дать несколько вариантов выполняемых программ, которые разграничива­ются при работе препроцессора, т. е. до выполнения.

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама