Структура программы в C++

Прежде чем приступить к написанию программ, необходимо изучить структуру программ на языке программирования С++. Своими словами, структура программ  это разметка рабочей области (области кода) с целью чёткого определения основных блоков программ и синтаксиса. Структура программ несколько отличается в зависимости от среды программирования. Мы ориентируемся на 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, прочитайте эту статью.

Практика

К сожалению, для данной темы пока нет подходящих задач. Если у вас есть таковые на примете, отправте их по адресу: admin@cppstudio.com. Мы их опубликуем!

Автор: Marienko L.
Дата: 25.08.2012
Поделиться:

Комментарии

  1. 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

  2. Дмитрий Петров

    «Мы видим, что у функции поменялся тип данных, место void написано int

    А где до этого писалось, что у нас void? 0_0 (и наверное правильно не «место», а «вместо»))))

    • admin

      admin

      Раньше в статье был тип данных void для main-функции. Но это уже не актуально, согласно стандарту С++ main должна возвращать int.

      • Demond

        А вот я разрушу миф

        #include <iostream>
        #include <conio.h>
        void main()
        {

         

        _getch();
        return ;
        } //пробывал в VC++ 2012 desktop то есть главной функции main не присваивешь ничего вот и всё

  3. RareScrap

    RareScrap

    Так же хочу кое что дополнить:

    В C++ нет необходимости писать в конце функции main return 0, т.к. main по умолчанию возвращает значение 0. return <Значение> следует использовать, если требуется вернуть значение, отличное от нуля.

    Так же заголовочные файлы могут включаться в программу двумя способами: #include <имя заголовочного файла> и #include «имя заголовочного файла». В первом случае, заголовочный файл ищется в предопределенных системой директориях и тех директориях, которые указаны в системной переменной Path. Во втором случае, заголовочный файл ищется в той же директории, в которой расположен файл с исходным кодом программы.

  4. RareScrap

    RareScrap

    Насколько я знаю, функция main всегда должна иметь тип int и возвращать целое значение. А объявить функцию main без типа и вовсе невозможно (стандарт ISO C++ запрещает такоей объявление). Или это не так? Использую компилятор MinGW

    • Денис Тутаев

      Почему интересно знать?Функция main может возвращать любое значение.Если например вместо int вписать double,то функция будет возвращать дробное значение,но при возвращении например 0 будет выводиться ошибка.

      • Demond

        нет всё будет работать не зависимо от типа данных главное что бы значение возвращено было

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.