Читайте также:
|
|
Программа на языке С++ состоит из директив препроцессора, указаний компилятору, объявлений переменных и/или констант, объявлений и определений функций.
Программа на языке C/C++ обязательно состоит хотя бы из одной функции, главной функции main(). При создании нового проекта перед нами был следующий код:
#include <iostream> using namespace std; int main() { cout << "Hello World!" << endl; return 0; } |
Тело функции обозначено фигурными скобками, внутри которых содержится блок операторов. Функция имеет свой тип, например в данном случае тип int, это видно в объявлении функции. Структура программы на языке C++ следующая:
Директивы препроцессора и глобальные переменные int main(параметры функции) { блок операторов } тип func1(параметры функции) { блок операторов } тип func2(параметры функции) { блок операторов } |
Тип функции определяет возвращаемое значение. Например функция main() должна возвращать целочисленное значение (что и происходит в коде, она возвращает 0). Значение 0 в данном случае сигнализирует о правильности выполнения программы. Функция возвращает значение вызываемому оператору. В данном случае таким оператором является оболочка ОС или отдельный процесс. Об этом мы поговорим позднее. Возвращаясь к структуре программы, хотелось бы прокомментировать первую строчку программы. Под директивами препроцессора воспринимаются строки начинающиеся с символа # выполняющие подключение библиотек и выполняющие условную компиляцию программы. Но об этом позже, пока у нас в текущей программе имеется такая строчка, она подключает библиотеку iostream, что дает возможность использовать функцию потокового вывода cout. Так же в этом месте мы можем использовать пространства имен using namespace. В программе мы подключаем пространства имен std. Без этой строчки использовать функцию вывода приходилось с использованием префикса std:
std::cout << "Hello World!" << std::endl; |
Главную функцию мы уже разобрали на начальном этапе, Если функция имела бы тип void возвращаемого значения бы не было. Функций в проекте может быть сколько угодно.
Урок 19. Компиляция программы и сборка исполняемого модуля. Размещение программы и данных в памяти.(
Компилятор C преобразует исходный текст на языке C в кодах ASCII в выполняемый объектный код. Процесс компиляции разделен на четыре фазы:
. Препроцессор:
- Осуществляет вставку исходных текстов из других файлов (#include)
- Раскрывает макроопределения (#define)
- Осуществляет условную обработку исходного файла (#ifdef)
- Уничтожает комментарии
. Транслятор (компилятор)
- Проверяет текст на отсутствие синтаксических ошибок
- Преобразует конструкции языка C в конструкции ассемблера
- Выполняет машинно-независимые и машинно-зависимые оптимизации
- Генерирует отладочную информацию.
. Ассемблер
- Преобразует конструкции языка ассемблера в машинные команды
- Генерирует объектный модуль и списки экспорта и импорта (списки внешних символов)
- У некоторых компиляторов этот этап исполняется той же командой, что и трансляция
. Редактор связей
- Осуществляет сборку объектных файлов в загружаемый модуль
- Просматривает библиотеки для разрешения внешних ссылок
Для запуска компилятора языка C используется команда cc (SunStudio) или gcc (GCC). Для запуска компилятора C++ используются команды CC или g++. В дальнейших примерах мы будем использовать название команды cc; когда будут обсуждаться особенности других форм запуска компилятора, это будет оговариваться отдельно.
Команда cc - это управляющая программа, которая последовательно вызывает с помощью fork и exec другие программы, реализующие фазы процесса компиляции. Каждой фазе соответствует свои опции, и у каждой фазы свои сообщения об ошибках. Раздел ФАЙЛЫ на странице Руководства cc(1) указывает, где может быть найдена каждая исполняемая фаза. В общем случае, фазы процесса компиляции не должны вызываться явно. Их вызов осуществляет команда cc(1). Каждая фаза использует файлы или программные каналы для передачи своего вывода следующей фазе.
Дата добавления: 2015-11-04; просмотров: 53 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Третья четверть 9 страница | | | Формат модуля определяет структура файла и правила его загрузки. |