Прежде чем приступить к написанию программ, необходимо изучить структуру программ на языке программирования С++. Своими словами, структура программ это разметка рабочей области (области кода) с целью чёткого определения основных блоков программ и синтаксиса. Структура программ несколько отличается в зависимости от среды программирования. Мы ориентируемся на IDE Microsoft Visual Studio, и по этому примеры программ будут показаны именно для MVS. Если вы используете другую IDE, то вам не составит труда перенести код из MVS в другие среды разработки, и вы поймете со временем, как это сделать.
Структура программ для Microsoft Visual Studio.
// struct_program.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" //здесь подключаем все необходимые препроцессорные директивы int main() { // начало главной функции с именем main //здесь будет находится ваш программный код }
В строке 1 говорится о точке входа для консольного приложения, это значит, что данную программу можно запустить через командную строку Windows указав имя программы, к примеру, такое struct_program.cpp
. Строка 1 является однострочным комментарием, так как начинается с символов //
, подробнее о комментариях будет рассказано в следующей статье. В строке 2 подключен заголовочный файл "stdafx.h"
. Данный файл похож на контейнер, так как в нем подключены основные препроцессорные директивы (те, что подключил компилятор, при создании консольного приложения), тут же могут быть подключены и вспомогательные (подключенные программистом).
include
— директива препроцессора, т. е. сообщение препроцессору. Строки, начинающиеся с символа #
обрабатываются препроцессором до компиляции программы.
Препроцессорные директивы также можно подключать и в строках, начиная после записи #include "stdafx.h"
до начала главной функции. Причём такой способ подключения библиотек является основным, а использование "stdafx.h"
— это дополнительная возможность подключения заголовочных файлов, которая есть только в MVS. С 4-й по 6-ю строки объявлена функция main
. Строка 4 – это заголовок функции, который состоит из типа возвращаемых данных (в данном случае int
), этой функцией, и имени функции, а также круглых скобок, в которых объявляются параметры функции.
int
— целочисленный тип данных
Между фигурными скобочками размещается основной программный код, называемый еще телом функции. Это самая простая структура программы. Данная структура написана в Microsoft Visual Studio. Все выше сказанное остается справедливым и для других компиляторов, кроме строки 2. Контейнера "stdafx.h"
нигде кроме MVS нет.
Структура программы для C++ Builder.
При создании консольного приложения мастер создания проектов создает автоматически следующий код:
//препроцессорная директива, автоматически подключённая мастером создания проектов #include <vcl.h> int main() { return 0; }
Мы видим, что у функции тип данных — int
. Это говорит о том что по завершении работы функция вернет какое-то целочисленное значение, в нашем случае 0. Целочисленное потому, что int
– это тип данных для целых чисел, таких как 4, 5, 6, 456, 233 и т. д.
Главное помнить, что если тип возвращаемых данных у функции main
— это int
или любой другой, кроме void
, то следует писать строку типа этой: return <возвращаемое значение>;
В строке 2 подключена библиотека vcl.h
– её автоматически подключает мастер создания приложений, поэтому удалять её не следует, иначе проект не будет рабочим.
В общем говоря, мастер создает автоматически структуру программы, немного отличающуюся от тех, что мы рассмотрели, но суть остается та же.
Например:
int main(int argc, char* argv[]) { return 0; }
Такой пример структуры генерируется мастером в MVS2010. Данный main
немного отличается. Подробнее рассмотрим позже, но скажу, что данный main
имеет такой вид, так как изначально рассчитан на поддержку юникода.
Существуют разные версии main
, но в этом нет ничего страшного, так как main
была главной функцией, так она ей и остается, поэтому все выше сказанное остается актуальным.
Пример структуры программы MVS с подключенными библиотеками.
#include "stdafx.h" #include <iostream> using namespace std; int main() { }
Имя подключаемых библиотек пишется внутри знаков больше, меньше. Заголовочные файлы и имя подключаемых библиотек – синонимы.
Синтаксис подключения заголовочных файлов:
#include <имя заголовочного файла>
Более старые заголовочные файлы подключаются так (этот стиль подключения библиотек унаследован у языка программирования C):
#include <имя заголовочного файла.h>
Различие состоит в том, что после имени ставится расширение .h
.
Язык программирования С++ является регистрозависимым. Например:
Return 0;
– не правильно, будет ошибка компиляции.
return 0;
– правильно!!!
В данной статье рассмотрены структуры программ на С++ в таких средах как MVS и Borland. И как вы уже заметили, эти структуры почти не отличаются. Поэтому данная статья актуальна для любой IDE. Если вы ещё не определились с выбором IDE, прочитайте эту статью.
Комментарии
SymbianC
Ра3 все пишут, то я как новинки, практикуюсь. Спасибо за внимание и хороши сайт. Ведь тут пишутся только коды.
/*
* структура заголов.файла, например пуст будет названием Eka.h
*/
// system include. Xaxa..xa
#include
#include
#include
// declariuem class file
public:
void CmdAboutL();
void CmdHelpL();
// таких войдов много
private: // protected
void SizeChange();
private:
AknButton* ibutton;
EikAknlist ilebel;
// конец кода типа
// end of file
Дмитрий Петров
«Мы видим, что у функции поменялся тип данных, место
void
написаноint
.»А где до этого писалось, что у нас void? 0_0 (и наверное правильно не «место», а «вместо»))))
admin
Раньше в статье был тип данных void для main-функции. Но это уже не актуально, согласно стандарту С++ main должна возвращать int.
Demond
А вот я разрушу миф
#include <iostream>
#include <conio.h>
void main()
{
_getch();
return ;
} //пробывал в VC++ 2012 desktop то есть главной функции main не присваивешь ничего вот и всё
RareScrap
Так же хочу кое что дополнить:
В C++ нет необходимости писать в конце функции main return 0, т.к. main по умолчанию возвращает значение 0. return <Значение> следует использовать, если требуется вернуть значение, отличное от нуля.
Так же заголовочные файлы могут включаться в программу двумя способами: #include <имя заголовочного файла> и #include «имя заголовочного файла». В первом случае, заголовочный файл ищется в предопределенных системой директориях и тех директориях, которые указаны в системной переменной Path. Во втором случае, заголовочный файл ищется в той же директории, в которой расположен файл с исходным кодом программы.
RareScrap
Насколько я знаю, функция main всегда должна иметь тип int и возвращать целое значение. А объявить функцию main без типа и вовсе невозможно (стандарт ISO C++ запрещает такоей объявление). Или это не так? Использую компилятор MinGW
Денис Тутаев
Почему интересно знать?Функция main может возвращать любое значение.Если например вместо int вписать double,то функция будет возвращать дробное значение,но при возвращении например 0 будет выводиться ошибка.
Demond
нет всё будет работать не зависимо от типа данных главное что бы значение возвращено было