Как программировать на c на windows

Обновлено: 07.07.2024

В предыдущей части нашего занятия мы познакомились вкратце с языком C, а также установили набор инструментов для сборки проектов MinGW.

Теперь давайте попробуем создать какой-нибудь исходный код на C и получить из него функционирующую программу.

Для этого создадим каталог (папку, директорий) где-нибудь, например, с именем MYPROG01 и создадим в данном каталоге файл с именем, например, main.c, так как файлы с исходным кодом принято создавать с расширением .c. Файл мы создадим вот такого содержания

Что же находится в нашем исходном коде.

Для начала мы подключаем файл stdio.h, в котором находятся прототипы (пока можете не вдаваться в значение этого слова, позже мы с прототипами будем работать сами постоянно) функций стандартной библиотеки C, связанной с вводом-выводом.

вызывает функцию стандартной библиотеки ввода-вывода printf, которая отправляет в средство стандартного вывода строку. В строке также могут быть использованы символы форматирования, с которыми мы познакомимся позже. Также здесь у нас использованы специальные символы возврата каретки и перевода строки, о которых я писал выше.

возвращает аргумент при выходе из функции. Возвращаем 0, что также является целым числом.

Откроем консоль (командную строку), находясь в нашем каталоге и, оказывается для нашей операции вполне достаточно одной команды gcc, в параметрах которой мы указываем файл с исходным кодом


В случае успеха у нас появится файл с именем a.exe в текущем каталоге


Проверим работу программы введя в консоли команду с именем исполняемого файла, расширение .exe можно не вводить. Мы получим следующий результат


Отлично! Наша программа работает.

Также мы можем назначить любое имя для выходного файла в параметре с помощью ключа -o (расширение можно также не вводить). Удалим a.exe и введём команду


У нас появится файл с нужным нам именем



Работоспособность его будет такая же, так как это тот же файл, только с другим именем


Как вообще происходит процесс создания исполняемого файла из файла (файлов) с исходным кодом?

Давайте попробуем теперь наш исполняемый файл создать в несколько этапов, благо нам это сделать MinGW вполне позволяет.

Удалим файл myprog.exe, чтобы у нас в директории остался лишь файл main.c.

Затем введём вот такую команду, которая нам сформирует файл main.i со всем кодом, в т.ч. подключенным, в результате препроцессинга


Судя по размеру полученного файла, мы понимаем, сколько кода нам в него добавил препроцессор


Покажу лишь часть кода в этом файле, остальной посмотрите у себя

Далее мы из этого файла можем получить ассемблерный (main.s) с помощью следующей команды


Откроем данный файл и посмотрим его содержимое

Пока нам здесь мало что понятно, но до ассемблера мы когда-нибудь, надеюсь, тоже доберёмся.

Теперь непосредственно компиляция. Для создания объектного файла main.o дадим следующую команду


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

Мы видим, что у нас появился объектный файл


Содержимое объектного файла мы смотреть не будем, так как мы там ничего не увидим, он близок по содержимому к исполняемому.

Затем мы уже производим линковку (создаём исполняемый файл из объектного (или нескольких))с помощью следующей команды


После данной команды у нас появился исполняемый файл


Это тот же файл, который мы получили в результате однопроходной сборки в самом начале. Только тут мы прошли все этапы сборки. Сейчас нам от этого мало толку, но когда у нас будет много файлов (модулей) с исходным кодом, а также будет подключение внешних статических и (или) динамических библиотек, то это будет уже очень актуально.

Также в результате поэтапной сборки мы можем применить некоторые опции, например изменить уровень оптимизации кода, используя ключи -O0, -O1, -O2, -O3 при создании объектного файла (или нескольких).

Назначение различных уровней оптимизации описано много где, например вот тут.

Я пробовал различные уровни в случае формирования исполняемого кода из исходного файла нашего занятия. Результат мало чем отличается, так как у нас и кода-то особого нет. А в случае написания программ с огромным количеством кода оптимизация сильно помогает. Хотя всю отладку программ на этапе их создания и тестирования лучше производить с отключенной оптимизацией (без использования ключа, так как по умолчанию оптимизация отключена, либо с ключом -O0).

Итак, на данном занятии мы установили набор инструментов для написания программ для Windows на языке C, а также попробовали на практике создать рабочую программу, пусть пока простую, но для кого-то простая программа, если она у него самая первая имеет гораздо больший интерес, чем сложная рабочая программа для тех, кто занимается программированием уже давно.

В качестве среды разработки под Windows автор советует использовать Visual Studio 2008 (800 Мб), если у вас Windows XP, Visual Studio 2013 (6.5 Гб) для Windows 7 и выше, или Dev C++ 5 (41 Мб) для тех, у кого слишком медленный интернет для загрузки Visual Studio. Пользователям Unix-подобных систем, потребуется компилятор GCC и любой текстовый редактор, например Vim.

После того, как вы установили все необходимое, приступим к написанию первой программы.

Создание проекта

Для Visual Studio

Откройте меню «Файл → Создать → Проект». Перейдите на вкладку «Общие» и выберите «Пустой проект». Придумайте проекту любое название, например «lesson1» и нажмите «OK».

В окне обозревателя решений (обычно он находится в левом верхнем углу) щелкните правой кнопкой на папке «файлы исходного кода». В диалоговом окне выберите пункт меню «Добавить → Создать элемент». Введите название для нового файла — main.cpp и нажмите кнопку «Добавить».

Для GCC

Создайте пустой файл и откройте его любым текстовым редактором, в котором есть подсветка синтаксиса.

Код первой программы

Наберите следующий код:

Описание синтаксиса

Содержимое третьей строки — using namespace std; указывает на то, что мы используем по умолчанию пространство имен с названием «std». Все то, что находится внутри фигурных скобок функции int main() <> будет автоматически выполняться после запуска программы.

Оператор cout предназначен для вывода текста на экран командной строки. После него ставятся две угловые кавычки ( << ). Далее идет текст, который должен выводиться. Он помещается в двойные кавычки. Оператор endl переводит строку на уровень ниже.

— В конце каждой команды ставится точка с запятой.

Компиляция и запуск

Теперь скомпилируйте и запустите программу. Тем, кто пользуется MS Visual Studio, нужно нажать сочетание клавиш «Ctrl+F5». Пользователям GCC нужно выполнить следующие команды:

Если программа собралась с первого раза, то хорошо. Если компилятор говорит о наличии ошибок, значит вы что-то сделали неправильно.

Одной из главных проблем человека, желающего начать изучать языки программирования C/C++, при этом ничего практически о них не зная, может являться отсутствие начальной точки опоры. Эта статья призвана помочь новичкам сделать первые шаги на захватывающем пути освоения этого семейства языков.

Итак, прежде чем ринуться в глубинные просторы интернета в поисках уроков по программированию на C, необходимо подготовить себе хорошую почву — среду программирования. На данный момент существует немалое количество программ, позволяющих писать программы на рассматриваемом языке, осуществлять проверку синтаксиса и компилировать (переводить) исходный код программы в исполняемый файл (с расширением *.exe). Среди них хочется отметить прежде всего Borland C, Borland C++, Dev-C++, Visual Studio, Eclipse, NetBeans, IDEA. Особенно хочется рассмотреть здесь довольно старую, но и по сей день пользующуюся популярностью среду Borland C++ (на примере версии 5.5.1) ввиду наличия некоторых сложностей в ее настройке (однако, лучше конечно же пользоваться более современной и более автоматизированной средой).

Итак, первым делом необходимо скачать сам компилятор Borland C++, включенный в пакет-установщик Borland Free Command Line Tools (файл freecommandLinetools.exe). Запустив скачанный файл, установите предлагаемый компилятор, выбрав все опции по-умолчанию. Установка произойдет в папку C:\Borland\BCC55. Зайдя в нее, среди прочих папок, вы можете видеть папку Bin, внутри которой лежит несколько исполняемых файлов. Запуская их непосредственно, убеждаемся, что мигает DOS-окно (обычно черного цвета) и тут же исчезает. Вы спросите, как же успеть что-либо сделать и, вообще, рассмотреть, что написано. Ответ — с помощью встроенной в систему Windows командной строки. Вызвать ее можно следующим образом. Зажмите на клавиатуре комбинацию клавиш Win + R и введите в появившемся окошке три буквы — cmd. Для того, чтобы запустить программы, находящиеся в упомянутой папке Bin, необходимо сначала перейти в командной строке в эту папку. Это делается вводом команды cd C:\Borland\BCC55. Для запуска программы теперь нужно лишь ввести имя программы. Сразу скажу, что нам нужен файл bcc32.exe, который является основной программой, компилирующей исходный код на языке C, в исполняемый exe-файл.

Чтобы не писать каждый раз команду cd C:\Borland\BCC55, необходимо добавить этот путь в т.н. переменную PATH системы Windows. Сделав это, система (в т.ч. командная строка) будет знать о наличии этого пути, и тогда можно в командной строке ограничиться лишь командой bcc32.exe без указания пути к этому файлу. Итак, делается это следующим образом. Найдя на рабочем столе или в меню «ПУСК» значок или меню «Мой компьютер», щелкните по нему правой кнопкой мыши и зайдите в «Свойства». Далее войдите в дополнительный параметры (Рис.1) и нажмите на кнопку «Переменные среды. ».

image


Рис.1.

В окошке «Системные переменные», найдите переменную Path и добавьте через ";" в конец ее содержимого путь C:\Borland\BCC55\Bin\ (Рис.2).

image


Рис.2.

Далее необходимо в папке Bin создать два конфигурационных файла (т.е. с раширением *.cfg) — bcc32.cfg и ilink32.cfg.

bcc32.cfg должен содержать 2 строки:

ilink32.cfg должен содержать 1 строку:

В принципе, на этом установка Borland C++ завершена.

Теперь давайте напишем традиционно первую программу «Hello, World!». Прежде чем непосредственно приступить к написанию программы, необходимо знать, что программа на C должна быть записана в текстовом файле с расширением *.c, а программа, содержащая к тому же команды языка C++, должна быть записана в текстовом файле с расширением *.cpp. Итак, создадим текстовый файл с именем first.txt и заменим расширение .txt на .c. Открываем этот файл с блокнотом (лучше всего на мой взгляд модернизированный блокнот Notepad++, т.к. он поддерживает синтаксис языка C/C++, подсвечивая его и выделяя программные блоки, что намного облегчает визуальное восприятие кода) и пишем туда следующие строчки:

Теперь, когда все готово для написания программ на языке С (когда вы уже знаете всю последовательность действий до генерации exe-файла), можно начать пользоваться каким-нибудь руководством, учебником или онлайн-уроками. Хочется отметить замечательную книжку Кернигана и Ритчи (собственно, это создатели языка С) «Программирование на С» (2-е издание, 2009), в которой доступным языком изложены многие тонкости языка и с помощью которой можно начать чувствовать сам язык. Удачи и успехов в вашем путешествии!

C — это достаточно "древний" язык программирования, он сформировался в начале 70-х. Не смотря на это, C — живой язык в том смысле, что он активно применяется в настоящее время. Он был придуман, использовался и используется для написания частей программного кода Unix-подобных операционных систем. Также на нем пишут утилиты, компиляторы и реже прикладные программы. Поэтому C называют системным языком программирования.

Его живучесть можно объяснить тем, что принципы работы операционных систем относительно универсальны, они не подвержены тому прогрессу и разнообразию, которые можно наблюдать в среде десктопного и мобильного ПО, Web-приложений. C не является языком достаточно высокого уровня, он ближе к архитектуре компьютера. В результате программы на C получаются более быстрыми.

C в чистом виде не поддерживает объектно-ориентированного программирования (хотя есть библиотека, в которой эмулируются возможности ООП). Поддержка ООП реализована в C++. Хотя последний возник на основе языка C, он не является его "продолжением", а представляет собой отдельный язык, который можно изучать, не зная C. Однако изучение C полезно перед знакомством с его "продвинутым младшим братом", т.к. синтаксис языков похож, C не перегружает мозг начинающего программиста сверхвозможностями и приучает к пониманию сути происходящего.

Подходит ли C для первого знакомства с программированием? Если вы не обучаетесь в вузе по специальности, связанной с IT, то нет. C предполагает понимание организации и принципов работы аппаратного обеспечения, в частности – памяти. Здесь многое делается с помощью указателей, они играют ключевую роль; эта тема достаточно сложная для понимания и обычно не изучается в школе.

Конечно, с помощью C можно изучать основы программирования и не изучать при этом указатели. Однако человек будет думать, что знает C, мало зная о нем по существу. Язык C был создан разбирающимися в устройстве «железа» профессиональными программистами для написания операционной системы UNIX. Его не задумывали как язык для обучения начинающих.

Среды и компиляторы для программирования на C

Если вы пользуетесь одним из дистрибутивов GNU/Linux, вам подойдет любой текстовый редактор с подсветкой синтаксиса, также понадобятся GCC и терминал.

Существуют редакторы для программистов, включающие различные дополнения, в том числе терминал, просмотр каталогов и др. Например, Geany или Atom.

C – компилируемый язык программирования. В GNU/Linux для получения исполняемых файлов используется GCC – набор компиляторов, включающий в том числе компилятор для C. Чтобы из исходного файла (обычно таким файлам дают расширение *.с) получить исполняемый, надо выполнить в терминале команду примерно следующего вида:

, где gcc — команда, запускающая программу, выполняющую компиляцию и иные действия; -o – ключ, сообщающий, что мы вручную указываем имя исполняемого файла; hello – имя получаемого исполняемого файла; hello.c – имя файла с исходным кодом. Имя исполняемого файла можно не указывать:

В этом случае исполняемый файл будет иметь имя по умолчанию a.out.

Для Windows существует свой набор компиляторов – MinGW. Его можно использовать самостоятельно, однако он входит в состав простой среды разработки Dev-C++, которая может оказаться хорошим выбором для обучения программированию на языках C и С++.

"Hello World" в GNU/Linux:

"Hello World" в Windows:

С другой стороны, существует большое количество кроссплатформенных сред разработки. Например, Eclipse + модуль CDT, KDevelop, CLion.

"Hello World" на C

На примере простейшей программы сразу отметим некоторые особенности языка программирования C.

В языке C роль основной ветки программы берет на себя функция main(). Она является точкой входа в программу. Эта функция всегда должна присутствовать в законченной программе на языке C, и исполнение программы начинается именно с нее. Однако объявленные внутри нее переменные не являются глобальными, их область видимости простирается только на main(). Тем не менее в языке программирования C почти весь программный код заключается в функции, и функция main() является главной и обязательной.

По умолчанию функция main() возвращает тип данных int, поэтому можно не указывать тип возвращаемых данных. Однако компилятор в этом случае выносит предупреждение.

Функция printf() предназначена для вывода данных. Ее назначение аналогично функции print() в Python. Однако функция printf() после вывода не выполняет переход на новую строку. Поэтому для перехода используется специальный символ, который обозначается комбинацией \n.

Выражения на языке C разделяются точкой с запятой.

В заголовочных файлах (они оканчиваются на *.h) обычно содержаться объявления тех или иных функций. Объявление — это просто описание функции: какие параметры она принимает и что возвращает. Сам код функции (определение) находится не в заголовочном файле, а в библиотеках (других файлах), которые могут быть уже скомпилированы и расположены в системных каталогах. Перед компиляцией программы запускается препроцессор языка C. Помимо прочего он включает в начало файла программы содержимое указанных в ней заголовочных файлов.

Закомментируйте 1 первую строчку кода программы HelloWorld. Попробуйте скомпилировать программу. Удалось ли получить исполняемый файл? Какое предупреждение выдал компилятор?

1 // - однострочный комментарий на языке C; /* … */ - многострочный комментарий на языке C.

Читайте также: