Перейти к содержимому
Теория · Первая программа · урок 1 из 7

Как устроена программа на C++

Программа на C++ — это текст, а процессор выполняет только машинный код. Поэтому файл с программой нельзя запустить сразу — сначала его переводят. Вот программа, которая печатает одну строку:

C++
#include <iostream>

int main() {
    std::cout << "Hello, world\n";  // Hello, world
}

Строка #include <iostream> вставляет в файл описание средств ввода и вывода из стандартной библиотеки. Среди них есть std::cout — стандартный вывод программы. Оператор << отправляет в него текст, а \n в конце текста переводит строку.

Где начинается выполнение

Выполнение программы начинается с функции main, и в программе она ровно одна. Её тело — это инструкции в фигурных скобках, и они выполняются по очереди, сверху вниз. Инструкция с std::cout заканчивается точкой с запятой. После последней инструкции main программа завершается.

От текста к программе

Файл hello.cpp с текстом программы называют исходным. Компилятор (compiler) проверяет, что текст написан по правилам C++, и переводит его в машинный код. Этот код он записывает в объектный файл (object file) — например, hello.o.

Компоновщик (linker) соединяет объектные файлы с готовым кодом стандартной библиотеки, в том числе с кодом std::cout. Получается исполняемый файл — его и запускает операционная система. Если исходных файлов несколько, компилятор переводит каждый отдельно, а компоновщик собирает из них одну программу. Обычно оба шага запускает одна команда, а объектные файлы — лишь промежуточный результат.

Ошибки до запуска и после

Если текст нарушает правила языка, компилятор сообщает об ошибке компиляции и называет строку, где её нашёл. Исполняемый файл тогда не появляется, и запускать нечего. Но компилятор проверяет только правила, а не замысел автора. Опечатку в "Helo, world\n" он пропустит, и её будет видно только во время выполнения — в том, что напечатает программа.

Кроме ошибок, компилятор выдаёт предупреждения. Программа с ними собирается, но компилятор показывает место, которое похоже на ошибку.

Частая ошибка

После инструкции с std::cout забыта точка с запятой:

C++
#include <iostream>

int main() {
    std::cout << "Hello, world\n"  // ✗
}
TEXT
error: expected ';' after expression

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