Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Программа. Программа состоит из одной или более единиц трансляции, которые компонуются (линкуются) вместе.

Читайте также:
  1. A) Қолданушыға қажет жұмыстарды атқаруға мүмкіндік беретін программа.
  2. a) Использование Past Indefinite является обязательным с глаголами, которые
  3. BITMAPV5HEADER – Win95/NT 4.0: приложения могут использовать BITMAPV4HEADER. Win NT 3.51 и более ранние должны использовать структуру BITMAPINFOHEADER.
  4. I saw smn doing (видеть в середине деятельности не обязательно полностью) другие глаголя которые употребляются в данной конструкции hear watch listen feel notice
  5. IV. Порядок назначения пенсии и перевода с одной пенсии на другую
  6. IV.Некоторые задачи
  7. IX. Порядок перевода воспитанников из одной МДОО в другую МДОО

Хорошо оформленная программа. Хорошо оформленная программа – программа сконструированная в соответствии с синтаксисом Стандарта и его семантическими правилами, и удовлетворяющая Правилу Одного Определения (см. ниже). Плохо оформленная программа не удовлетворяет этим требованиям.

 

Компиляция.

В C++ исходный файл подвергается ряду преобразований на пути к исполняемой программе. Первоначальные шаги включают обработку всех # include директив и условных директив препроцессора для того, чтобы получить то, что в Стандарте названо единицей трансляции. Единицы трансляции концептуально важны, поскольку они не имеют никаких зависимостей (связей) от других файлов. Программисты пока еще используют термин исходный файл, даже если речь идет о модуле трансляции. Термин “трансляция”, обычно, включает в себя как компиляцию, так и интерпретацию, хотя большинство С++-трансляторов являются компиляторами. Эдесь мы обсудим, как в С++ читаются и компилируются исходные файлы (модули трансляции).

В C++ программа может состоять из многих исходных файлов, и каждый файл может компилироваться отдельно. Концептуально(схематично), процесс компиляции имеет несколько шагов:

1. Чтение физических символов из исходного файла и трансляция их в символы исходного набора. Исходный “файл” не обязательно есть некоторый физический файл – он может быть получен из базы данных, например.

2. Если встречается пара (обратный слэш, символ новая строка), т.е., (\,\n), то она уничтожается. Эта комбинация не должна попадать в середину unicode -символа и не должна быть в конце файла. Она может использоваться в символьном или строковом литерале, или для продолжения директивы препроцессора и в однострочном комментарии, расположенном на нескольких линиях. Непустой файл должен заканчиваться символом новая строка.

3. Разбиение исходного кода на препроцессорные лексемы, разделенные пробелами и комментариями. Препроцессорные лексемы слегка отличаются от лексем времени компиляции. Препроцессорные лексемы могут быть именем заголовка (header), идентификатором, цифрой, символьным литералом, строковым литералом, символом или каким-либо знаком. Каждая такая лексема является самой длинной последовательностью знаков, которая может быть идентифицирована как верная (допустимая в языке) лексема, не зависимо от того, что следует после этой лексемы.

4. Выполняется препроцессорная обработка и подстановка (раскрытие) макросов. Все # include – файлы обрабатываются, как описано в шагах 1-4.

5. Преобразование символьных и строковых литералов в исполняемый набор символов.

6. Конкатенируются смежные (соседние) строковые литералы. “Узкие” с узкими, “Широкие” – с широкими. Смешение узких строковых литералов с широкими приводит к ошибке.

7. Выполняется основная компиляция.

8. Сборка (объединение) откомпилированных файлов. Для каждого файла все требуемые экземпляры шаблонов (инстанциации, инстанцированные шаблоны) идентифицируются, и необходимые определения шаблонов размещаются по своим местам и компилируются.

9. Разрешаются внешние ссылки. Откомпилированные файлы линкуются (компонуются) для получения исполняемый код (image).

// Вот такая невеселая работа у компилятора. И это - только концептуально.


Дата добавления: 2015-11-16; просмотров: 43 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Некоторые общие замечания и пропедевтика.| Компиляторы в семействе ОС Windowss

mybiblioteka.su - 2015-2024 год. (0.006 сек.)