Урок 1. Установка компилятора и первая программа
В этом уроке на вашем компьютере появится компилятор, а вы напишете, соберёте и запустите первую программу на C++. Понадобится около получаса.
Что такое компилятор
Программа на C++ — это обычный текстовый файл с расширением .cpp. Компьютер не умеет выполнять такой текст напрямую. Его сначала переводит в машинный код компилятор, и получается исполняемый файл: в Windows — .exe, в Linux и macOS — файл без расширения. Этот файл уже можно запускать, и компилятор для этого больше не нужен.
Перевод называется сборкой (или компиляцией). Если в тексте программы ошибка, компилятор не соберёт её и напишет, в какой строке и что не так.
Шаг 1. Поставьте компилятор
Способ зависит от системы на компьютере — выберите свою.
WindowsVisual Studio, Code::Blocks или MSYS2
Есть три удобных пути, все бесплатные:
- Visual Studio Community — большая среда разработки от Microsoft со своим компилятором MSVC. При установке отметьте набор «Разработка классических приложений на C++».
- Code::Blocks — небольшая среда разработки. Берите установщик, в имени которого есть
mingw: в нём уже есть компилятор g++. - MSYS2 — набор программ, из которого ставится g++ для работы в командной строке и в редакторе VS Code.
По шагам каждый путь описан в справке Как установить компилятор C++ в Windows.
LinuxUbuntu, Debian, Linux Mint
Откройте терминал и выполните:
sudo apt update
sudo apt install g++Первая команда скачивает свежий список пакетов, вторая ставит компилятор g++.
macOSинструменты командной строки Xcode
Компилятор clang ставится вместе с инструментами командной строки Xcode:
xcode-select --installВ macOS команда g++ тоже работает, но на самом деле запускает clang. Для этого курса разницы нет.
Проверьте, что компилятор на месте (в Windows — в командной строке, если ставили MSYS2 или добавили папку компилятора в переменную Path):
g++ --versionКоманда выводит версию компилятора. Сообщение «команда не найдена» значит, что компилятор не установлен или система не знает, где он лежит.
Шаг 2. Напишите программу
Создайте файл hello.cpp в любом редакторе и наберите:
#include <iostream>
int main() {
std::cout << "Hello, world!\n";
return 0;
}Hello, world!Что значит каждая строка:
#include <iostream>— подключает часть стандартной библиотеки для ввода и вывода (input/output stream — поток ввода-вывода). Без неё компилятор не знает, что такоеstd::cout.int main()— главная функция. Выполнение любой программы на C++ начинается с неё. Словоintзначит, что функция возвращает целое число.- Фигурные скобки
{и}— начало и конец тела функции: всё, что между ними, выполняется по порядку. std::cout << "Hello, world!\n";— выводит текст на экран.cout— поток вывода,<<отправляет в него данные,\n— перевод строки. Приставкаstd::значит, чтоcoutвзят из стандартной библиотеки.return 0;— программа завершилась успешно. Число0получает система; любое другое число значит ошибку.
Каждая команда заканчивается точкой с запятой ;. Это самая частая ошибка новичка — забытая ;.
Шаг 3. Соберите и запустите
Как собрать программу — зависит от того, где вы её пишете.
Командная строкаLinux, macOS, Windows с MSYS2 или MinGW
Перейдите в папку с файлом (командой cd с путём к папке) и выполните:
g++ -std=c++17 -Wall -o hello hello.cpp
./helloПервая команда собирает программу, вторая запускает. Что значат части команды:
| Часть | Что делает |
|---|---|
g++ | компилятор C++ |
-std=c++17 | стандарт языка C++17 |
-Wall | включает предупреждения о подозрительных местах в коде |
-o hello | имя исполняемого файла (output — выход) |
hello.cpp | файл с программой |
В Windows исполняемый файл получит имя hello.exe, а запускается он командой hello.exe в командной строке или .\hello.exe в PowerShell.
Без -o файл получит имя по умолчанию: a.out в Linux и macOS, a.exe в Windows.
Visual StudioCtrl+F5
Создайте проект по шаблону «Консольное приложение» — в нём уже есть похожая программа. Запуск — Ctrl+F5 (запуск без отладки): окно с результатом не закроется, пока не нажата клавиша.
Code::BlocksF9
Создайте проект «Console application» на C++ или откройте файл .cpp и нажмите F9 — сборка и запуск одной клавишей.
Предупреждения (warning) — не ошибки: программа соберётся. Но предупреждение часто указывает на настоящую ошибку в логике, поэтому включайте -Wall и читайте их.
Комментарии
Компилятор пропускает комментарии — пояснения для людей:
#include <iostream>
int main() {
// Комментарий до конца строки
std::cout << "Line 1\n";
/* Комментарий
на несколько строк */
std::cout << "Line 2\n";
return 0;
}Line 1
Line 2Первые ошибки
Уберите ; после строки с cout и соберите программу снова. Компилятор напишет примерно так:
hello.cpp: In function 'int main()':
hello.cpp:4:35: error: expected ';' before 'return'hello.cpp:4:35 — файл, строка 4, позиция 35. Ошибку ищите в этой строке или в строке выше: компилятор замечает пропуск только тогда, когда дошёл до следующей команды. Исправьте первую ошибку и соберите снова — остальные сообщения часто бывают следствием первой.
Другие частые ошибки на старте:
Mainилиmianвместоmain— C++ различает большие и маленькие буквы, и программа безmainне соберётся;- кавычки «ёлочки» или
”из текстового редактора вместо прямых"— набирайте код в редакторе кода; - забытый
#include <iostream>— ошибка'cout' is not a member of 'std'.
Русские буквы в консоли Windows иногда выводятся непонятными значками: консоль и программа используют разные кодировки. Это не ошибка в программе. В примерах курса вывод латиницей, чтобы этой проблемы не было.
Коротко
- Компилятор переводит файл
.cppв исполняемый файл. Самые распространённые — g++, clang и MSVC (Visual Studio). - Выполнение программы начинается с функции
main. - Вывод на экран —
std::cout << ..., для него нужен#include <iostream>. - Каждая команда заканчивается
;. - Сборка в командной строке:
g++ -std=c++17 -Wall -o hello hello.cpp, запуск:./hello. - Исправляйте ошибки компилятора по одной, начиная с первой.