В предыдущей части нашего занятия мы познакомились вкратце с языком C, а также установили набор инструментов для сборки проектов MinGW.
Теперь давайте попробуем создать какой-нибудь исходный код на C и получить из него функционирующую программу.
Для этого создадим каталог (папку, директорий) где-нибудь, например, с именем MYPROG01 и создадим в данном каталоге файл с именем, например, main.c, так как файлы с исходным кодом принято создавать с расширением .c. Файл мы создадим вот такого содержания
printf ( «Hello, World. rn» ) ;
Это и будет наша первая программа, которая выведет в консоль текст Hello, World. , а также возвратит каретку и переведёт строку благодаря специальным символам ‘r’ и ‘n’.
Что же находится в нашем исходном коде.
Для начала мы подключаем файл stdio.h, в котором находятся прототипы (пока можете не вдаваться в значение этого слова, позже мы с прототипами будем работать сами постоянно) функций стандартной библиотеки C, связанной с вводом-выводом.
Язык Си — Как создать и открыть окно с помощью функций WinAPI.
Далее идёт функция (в C все подпрограммы обёртываются в функции, об этом мы также поговорим позже) main(), которая является точкой входа в нашу программу и любая программа в C всегда начинает выполняться именно с этой функции. У функции есть имя main, служащее для того, чтобы функцию можно было вызвать откуда-либо, также есть параметры входящие, которые заключены в круглые скобки (в нашем случае функция никаких параметров не принимает), а также один возвращаемый параметр какого-либо типа (в нашем случае int — целочисленный знаковый тип, о типах мы тоже будем говорить позже). Также у любой функции, а наша функция тому не исключение есть тело — это часть функции, заключенная в фигурные скобки. В теле идут друг за другом команды, которые говорят «программе», что она должна делать в данный момент.
printf ( «Hello, World. rn» ) ;
вызывает функцию стандартной библиотеки ввода-вывода printf, которая отправляет в средство стандартного вывода строку. В строке также могут быть использованы символы форматирования, с которыми мы познакомимся позже. Также здесь у нас использованы специальные символы возврата каретки и перевода строки, о которых я писал выше.
возвращает аргумент при выходе из функции. Возвращаем 0, что также является целым числом.
Задача MinGW — преобразовать файл с исходным кодом в исполняемый типа exe.
Откроем консоль (командную строку), находясь в нашем каталоге и, оказывается для нашей операции вполне достаточно одной команды gcc, в параметрах которой мы указываем файл с исходным кодом
В случае успеха у нас появится файл с именем a.exe в текущем каталоге
Проверим работу программы введя в консоли команду с именем исполняемого файла, расширение .exe можно не вводить. Мы получим следующий результат
ОКОННОЕ ПРИЛОЖЕНИЕ С НУЛЯ — ПОЛНЫЙ БАЗОВЫЙ КУРС C++ WINAPI
Отлично! Наша программа работает.
Также мы можем назначить любое имя для выходного файла в параметре с помощью ключа -o (расширение можно также не вводить). Удалим a.exe и введём команду
У нас появится файл с нужным нам именем
Работоспособность его будет такая же, так как это тот же файл, только с другим именем
Как вообще происходит процесс создания исполняемого файла из файла (файлов) с исходным кодом?
Первый этап — это трансляция, которая превращает исходный код в объектный, и создаётся файл (или несколько файлов) с расширением -o.
Второй этап — это компоновка или линковка. На данном этапе объектный файл (или несколько) компонуется (компонуются) в один исполняемый файл.
Причём первый этап мы можем разбить на несколько этапов, так как трансляция тоже происходит не единовременно. Сначала происходит препроцессинг, где в одно целое собирается весь исходный код, в том числе код из подключенных файлов с помощью директивы #include. Далее идёт создание ассемблерного файла (или нескольких), а уже затем из ассемблерного файла (или нескольких) формируется объектный файл (или несколько).
Давайте попробуем теперь наш исполняемый файл создать в несколько этапов, благо нам это сделать MinGW вполне позволяет.
Удалим файл myprog.exe, чтобы у нас в директории остался лишь файл main.c.
Затем введём вот такую команду, которая нам сформирует файл main.i со всем кодом, в т.ч. подключенным, в результате препроцессинга
Судя по размеру полученного файла, мы понимаем, сколько кода нам в него добавил препроцессор
Покажу лишь часть кода в этом файле, остальной посмотрите у себя
# 210 «c:mingwincludestdio.h» 3
typedef struct _iobuf
char * _ptr ;
char * _base ;
int _charbuf ;
int _bufsiz ;
char * _tmpfname ;
Далее мы из этого файла можем получить ассемблерный (main.s) с помощью следующей команды
Откроем данный файл и посмотрим его содержимое
Assembly (x86)
. file «main.c»
. def _ _ _ main ; .scl 2; .type 32; .endef
. section . rdata , «dr»
. ascii «Hello, World. 15»
. globl _ main
. def _ main ; .scl 2; .type 32; .endef
. cfi _ startproc
. cfi _ def _ cfa _ offset 8
. cfi _ offset 5 , — 8
movl %esp , %ebp
. cfi _ def _ cfa _ register 5
andl $ — 16 , %esp
subl $16 , %esp
call _ _ _ main
movl $ LC 0 , ( %esp )
call _ puts
movl $0 , %eax
. cfi _ restore 5
. cfi _ def _ cfa 4 , 4
. cfi _ endproc
. ident «GCC: (MinGW.org GCC-8.2.0-3) 8.2.0»
. def _ puts ; .scl 2; .type 32; .endef
Пока нам здесь мало что понятно, но до ассемблера мы когда-нибудь, надеюсь, тоже доберёмся.
Теперь непосредственно компиляция. Для создания объектного файла main.o дадим следующую команду
Имя выходного файла мы не указываем, так как по умолчанию формируется файл с тем же именем, что и исходный, если нужно какое-то другое имя на выходе, то можно использовать ключ -o.
Методология разработки приложений с использованием форм
В этой статье речь пойдет о создании простейших приложений с использованием форм на языке C++. Сразу хочу внести ясность: разработка «формовых» С++ приложений будет осуществляться в среде Microsoft Visual Studio (обойдем стороной главного конкурента от компании Borland Software). Стоит отметить, что в Visual Studio есть два способа сделать приложение с формами, решение принимается в момент создания нового проекта.
Первый из них — использовать Windows Forms, реализующий графический интерфейс пользователя и входящий в Microsoft.NET Framework. Данный подход упрощает доступ к интерфейсным элементам Microsoft Windows благодаря созданию обёртки для Win32 API в управляемом коде. Если изложить свои мысли в более понятной форме, то данный подход очень схож с построением консольного приложения, но чуть более сложен т.к. использует формы.
Второй способ основан на использовании Microsoft Foundation Classes (MFC), библиотеке, которая берет на себя заботу о создании каркаса приложения. В отличие от первого, MFC «из коробки» использует патерн MVC (Model-View-Cont roller). Данный подход сложнее первого, но опираясь на него можно запросто создать каркас для весьма интересных приложений, к примеру, текстового редактора или использовать компонент Ribbon и сделать меню как в небезызвестном MS Office 2010.
Создание приложения в MS Visual Studio
Давайте создадим новое приложение: File->New->Project. В появившемся окне как на рисунке выше найдите и выберите Windows Forms Application, далее укажите название (app1) и расположение нового проекта и подтвердите его создание нажатием кнопки «OK».
Прежде чем приступить непосредственно к программированию , следует понять, что такое событие. Событие это действие, которое происходит при определённых условиях. Самыми простыми (и наиболее распространенным и) можно считать Load,Click… рассмотрим некоторые из них более подробно:
- Activated — событие, возникающее при активизации элемента.
- Click — возникает при одиночном нажатии на элемент.
- DoubleClick — двойной щелчок по элементу.
- HelpRequested — срабатывает при нажатии клавиши .
- Paint — возникает, когда элемент перерисовывается .
- MouseLeave — событие срабатывает, когда курсор покидает границы элемента.
Не стоит забывать, что свойственные элементу события зависят от его типа. Чтобы просмотреть все доступные для объекта формы события следует выделить его и в окне свойств выбрать значок молнии. Ниже показана часть событий для элементаForm1. Как можете видеть для события Load выбрана функция Form1_Load, следовательно код, содержащийся в этой функции будет вызван при загрузке формы.
Откройте файл Form1.h, там будет такой код:
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
Это та самая функция Form1_Load, срабатывающая при загрузке формы. Давайте убедимся в этом, добавив на форму компонент TextBox.
Для этого откройте ресурс формы и выделите его. Далее выберите панель с инструментами Toolbox и перетащите компонент TextBox на форму. Модифицируйте функцию Form1_Load следующим образом:
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) < textBox1->Text = «Hello, World!»; //textBox1 – имя добавленного вами текст бокса >
Запустите проект, в итоге должно появиться следующее сообщение:
На этом пока все, продолжение в следующих уроках.
Источник: cppstudio.com
Как создать C/C++ проект в Visual Studio
Visual Studio — одна из замечательнейших IDE для написания C/C++ кода. В ней пишут многие программисты и многие учебные заведения используют её для обучения программированию, а потому будет полезно знать, как создавать в ней новый проект для разработки своей C/C++ программы.
- Для создания нового проекта запустите Visual Studio, выберете в верхнем меню файл , Создать , Проект , после чего откроется окно с выбором типа проекта.
- Найдите в левом меню окна пункт Visual C++ , Классическое приложение Windows и выберете его, а в правом окне выберете Консольное приложение Windows .
- В поле ввода «Имя» введите название вашего проекта и нажмите кнопку «OK».
- Visual Studio может подвиснуть на некоторое время, но вскоре появится окно для ввода кода программы на C/C++ с готовой функцией main
Создание проекта в VS
Ввод имени проекта и решения
Окно с редактором кода
Вот таким простым способом вы можете создать проект в Visual Studio и начать писать код на C или C++!
Программист, сооснователь programforyou.ru, в постоянном поиске новых задач и алгоритмов
Языки программирования: Python, C, C++, Pascal, C#, Javascript
Выпускник МГУ им. М.В. Ломоносова
Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.
Источник: programforyou.ru