Файл, содержащий текст программы, написанный на языке Си++, — это обычный текстовый файл, который можно отредактировать или создать в любом текстовом редакторе. Но поскольку он всё же содержит текст программы, а не просто текст, то для него обычно вместо расширения *.txt выбирают расширение *.cpp, *.c или *.h.
С текстом программы принято работать не в обычном текстовом редакторе, а в среде программирования, например Borland или Microsoft Visual, которая содержит свой специфичный текстовый редактор. Преимущество такой организации работы в том, что текстовый редактор среды с помощью цвета или пробелов делает программу более читабельной, например, выделяя каждый своим цветом ключевые слова языка, константы, комментарии и т.д. Кроме того, среда программирования предназначена для компиляции и компоновки из исходного текстового файла нового исполняемого файла (программы), содержащего инструкции процессора и имеющего обычно расширение *.exe. Этапы подготовки исполняемой программы приведены на рис. 1.1.
«Каковы этапы разработки Программы»
Рис. 1.1. Этапы подготовки исполняемой программы
Исходный текст программы на первом этапе обрабатывается препроцессором, задача которого выполнить директивы препроцессора (строки программы, начинающиеся с #). Например, в тексте программы hello.cpp есть только одна директива include. С помощью этой директивы в исходный текст программы препроцессор вставляет содержимое текстового файла iostream.h. В результате мы получаем полный текст программы.
На втором этапе текст программы анализируется компилятором (Compiler), и если в программе отсутствуют синтаксические ошибки, то создаётся так называемый объектный файл с расширением *.obj, который является исходным файлом для третьего этапа – компоновки. Если же компилятор обнаруживает синтаксические ошибки в тексте программы, то объектный файл не создаётся, и программисту в отдельном окне message выводятся сообщения об ошибках с указанием, в какой строке программы, по мнению компилятора, присутствует ошибка и в чём она заключается. В 90% случаев компилятор правильно указывает строку с ошибкой и её тип, но иногда ошибка может находиться выше в тексте программы.
Кроме ошибок компилятор может выдавать предупреждения. Одним из типичных предупреждений является сообщение компилятора о том, что программист определил переменную, но дальше в тексте программы нигде её не использовал. С предупреждениями компилятора желательно ознакомится и по возможности устранить, так как некоторые предупреждения, могут быть не столь безобидны, как описанное выше, и являются указанием программисту на возможную скрытую ошибку в программе. Тем не менее, наличие только предупреждений не препятствует созданию объектного модуля и переходу к этапу компоновки.
При компоновке Linker (компоновщик) создаёт исполняемый файл, обрабатывая объектный файл и включая в него код из библиотечных файлов. Компоновщик, как и компилятор, тоже может выдавать сообщения об ошибках. Это происходит тогда, когда программист описал объект, но забыл его определить. В этом случае исполняемый файл не будет создан, пока программист не исправит ошибки и не запустит компоновщик заново.
Урок 1. Полный цикл создания сайтов | Курс Веб разработчик | Академия верстки
В компиляторах обычно предусмотрена возможность выполнения отдельных этапов подготовки программы по отдельности или вместе. Так в компиляторе фирмы Borland при выборе в меню команды Compile будет выполнена только компиляция программы с созданием её объектного модуля. При выборе в меню команды Link запустится только компоновщик, который воспользуется объектным модулем программы и создаст исполняемую программу. При выборе в меню команды Build all будут выполнены все этапы подготовки программы.
Источник: mydocx.ru
Тип данных
Объединенная единым алгоритмом совокупность описаний и операторов образует программу на алгоритмическом языке. Для того чтобы выполнить программу, требуется перевести ее на язык, понятный процессору — в машинные коды. Этот процесс состоит из нескольких этапов.
Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочных файлов — текстовых файлов, в которых содержатся описания используемых в программе элементов).
Получившийся полный текст программы поступает на вход компилятора, который выделяет лексемы, а затем па основе грамматики языка распознает выражения и операторы, построенные из этих лексем. При этом компилятор выявляет синтаксические ошибки и в случае их отсутствия строит объектный модуль.
Компоновщик, или редактор связей, формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие функции библиотек, обращение к которым содержится в любой программе (например, для осуществления вывода на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки. Исполняемый модуль имеет расширение. ехе и запускается на выполнение обычным образом.
— внутреннее представление данных в памяти,
— множество значений, которые могут применять данные этого типа,
— операции и функции, которые можно применять к величинам этого типа.
Типы языка С делятся на основные и составные.
Основные типы данных.
Основные (стандартные) типы часто называют арифметическими, потому что их использовать в арифметических операциях.
Целый тип int
Внутреннее представление — целое число в двоичном коде. Оно зависит от платформы и типа компьютера.
Для 16-разрядного процессора — 2 байта.
Для 32- разрядного процессора -4 байта.
С типом int используются т.н. спецификаторы.
Спецификатор short и long определяют длину внутреннего представления.
short int — 2 байта.
long int – 4 байта.
Спецификаторы signed и unsigned определяют вид числа – со знаком или без знака.
unsigned – беззнаковый – старший разряд рассматривается как часть кода.
signed – знаковый – старший разряд рассматривается знак числа.
unsigned int — целое без знака | Значение | Значащие цифры | |
signed int — целое со знаком | Значение | знак | Значащие цифры |
— 25 |
signed int – (принимается по умолчанию)
Таким образом, диапазон значений int зависит от спецификаторов.
Константам приписывается тип в соответствии с их видом. Можно изменять тип константы, используя суффикс L, l (long) или S, s,U, u (unsigned). Несколько суффиксов можно использовать одновременно:
32 L 5 lu 74 Ls.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Этапы компиляции и компоновки программ на языке C++
Вы когда-нибудь задумывались над тем, как именно создаются исполняемые файлы с расширением .exe из исходных кодов? Какова роль компилятора и компоновщика? В этой очень короткой заметке, я опишу этот процесс очень просто, не вдаваясь в подробности его реализации.
Объединенная единым алгоритмом совокупность описаний и операторов образует программу на алгоритмическом языке. Для того чтобы выполнить программу, требуется перевести ее на язык, понятный процессору — в машинные коды. Этот процесс состоит из нескольких этапов. Рисунок ниже иллюстрирует эти этапы для языка С++.
Этапы создания исполняемой программы на C++
Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочных файлов — текстовых файлов, в которых содержатся описания используемых в программе элементов).
Получившийся полный текст программы поступает на вход компилятора, который выделяет лексемы, а затем на основе грамматики языка распознает выражения и операторы, построенные из этих лексем. При этом компилятор выявляет синтаксические ошибки и в случае их отсутствия строит объектный модуль.
Компоновщик, или редактор связей, формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие функции библиотек, обращение к которым содержится в любой программе (например, для осуществления вывода на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки. Исполняемый модуль имеет расширение .ехе и запускается на выполнение обычным образом.
Таким образом создаются исполняемые программы на C++. Конечно это очень общее описание этого сложного процесса, но четко передает смысл всех этапов работы компилятора и компоновщика.
По материалам книги «Программирование на языке высокого уровня CC++», Павловская Т.А.
Источник: itandlife.ru