Структура программы и компиляция

Структура программы на C++ состоит из нескольких ключевых элементов, которые помогают организовать код и сделать его понятным, модульным и легко поддерживаемым.

Программа на С++ состоит из набора инструкций. Каждая инструкция (statement) выполняет определенное действие.

В конце инструкции в языке C++ ставится точка с запятой (;). Данный знак указывает компилятору на завершение инструкции.

Пример:
std::cout << "Hello World!";

Блок кода (набор инструкций) заключается в фигурные скобки.

Пример:
{ std::cout << "Hello World!"; std::cout << "Hello!"; }

Любая программа написанная на C++ должна иметь как миниум одну функцию, которая запускается при запуске программы.

#include <iostream> // подключаем заголовочный файл iostream int main() // определяем функцию main { // начало функции std::cout << "Hello World!"; // выводим строку в консоль return 0; // выходим из функции }

В начале изучения C++ мы будем писать код внутри функции main в фигурных скобках.

Комментарии в C++

Комментарии в C++ предназначены написания подсказок к программе, использование комментариев упрощает понимание и восприятие кода.

В С++ существует два типа комментариев

  • Однострочные
    // Комментарий
  • Многострочные
    /* Строка с комментарием Ещё строка с комментарием */

Комментарии не являются исполняемым кодом и никак не влияют на ход исполнения программы.


Компиляция

Компиляция — это процесс преобразования исходного кода на C++ в исполняемый файл, который может быть запущен на компьютере. Разберем, как происходит компиляция и как её выполнить вручную или с помощью инструментов.

1. Этапы компиляции

Компиляция программы на C++ состоит из нескольких этапов:

  1. Препроцессинг:
    • Препроцессор обрабатывает директивы #include, #define, #ifdef и другие.
    • Результат — чистый код на C++, который передается компилятору.
  2. Компиляция:
    • Компилятор преобразует код на C++ в объектный код (машинный код для каждой единицы трансляции).
    • Результат — объектные файлы (например, .o или .obj).
  3. Компоновка (линковка):
    • Линкер объединяет объектные файлы и библиотеки в один исполняемый файл.
    • Результат — исполняемый файл (например, .exe на Windows или без расширения на Linux).
2. Компиляция вручную

Для компиляции вручную используется компилятор, например, g++ (GCC) или clang++ (Clang).

Пример компиляции одного файла:
g++ main.cpp -o program
  • main.cpp — исходный файл.
  • -o program — указывает имя выходного файла (program на Linux/macOS или program.exe на Windows).
Пример компиляции нескольких файлов:
g++ main.cpp utils.cpp -o program
  • main.cpp и utils.cpp — исходные файлы.
  • -o program — имя выходного файла.
Пример с генерацией объектных файлов:
  1. Скомпилируйте каждый файл в объектный:

    g++ -c main.cpp -o main.o g++ -c utils.cpp -o utils.o
  2. Соберите объектные файлы в исполняемый:

    g++ main.o utils.o -o program
3. Использование Makefile

Makefile — это файл, который автоматизирует процесс компиляции.

Пример Makefile:
CXX = g++ # Компилятор CXXFLAGS = -Wall -std=c++17 # Флаги компиляции TARGET = program # Имя исполняемого файла SRCS = main.cpp utils.cpp # Исходные файлы OBJS = $(SRCS:.cpp=.o) # Объектные файлы all: $(TARGET) $(TARGET): $(OBJS) $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS) %.o: %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ clean: rm -f $(OBJS) $(TARGET)
Как использовать:
  • Соберите проект:

    make
  • Очистите проект (удалите объектные и исполняемые файлы):

    make clean
4. Использование CMake

CMake — это кроссплатформенная система сборки, которая генерирует Makefile или файлы для других систем сборки (например, Visual Studio).

Пример CMakeLists.txt:
cmake_minimum_required(VERSION 3.10) # Минимальная версия CMake project(MyProgram) # Имя проекта set(CMAKE_CXX_STANDARD 17) # Используем стандарт C++17 add_executable(MyProgram main.cpp utils.cpp) # Создаем исполняемый файл
Как использовать:
  • Создате папку для сборки:

    mkdir build cd build
  • Сгенерируйте Makefile:

    cmake ..
  • Собери проект:

    make
5. Компиляция в IDE

Большинство IDE (например, Visual Studio, CLion, Code::Blocks) автоматизируют процесс компиляции. Достаточно нажать кнопку Build или Run.

6. Пример полного цикла компиляции
Файл main.cpp:
#include <iostream> #include "utils.h" int main() { std::cout << "Sum: " << add(5, 3) << std::endl; return 0; }
Файл utils.h:
#ifndef UTILS_H #define UTILS_H int add(int a, int b); #endif
Файл utils.cpp:
#include "utils.h" int add(int a, int b) { return a + b; }
Компиляция вручную:
g++ -c main.cpp -o main.o g++ -c utils.cpp -o utils.o g++ main.o utils.o -o program
Запуск:
./program

Комментарии

Добавить комментарий

Чтобы оставить комменатрий необходимо Авторизоваться