Menu
Coddy logo textTech

Сборка и компиляция C++

Часть раздела Объектно-ориентированное программирование путешествия по C++ на Coddy — урок 2 из 104.

C++ собирается в три этапа: препроцессинг, компиляция и компоновка.

1. Препроцессинг — директивы #include разрешаются, копируя содержимое заголовочных файлов в исходные файлы

#include <iostream>    // Системный заголовочный файл
#include "my_file.h"   // Ваш собственный заголовочный файл

2. Компиляция — Каждый файл .cpp компилируется независимо в объектный файл (.o)

// math_utils.cpp компилируется в math_utils.o
// main.cpp компилируется в main.o

3. Компоновка — Объектные файлы объединяются в окончательный исполняемый файл

// math_utils.o + main.o → program.exe

Заголовочный файл объявляет то, что существует (прототипы). Файл .cpp содержит фактическую реализацию. Компоновщик связывает вызовы в main.cpp с реализациями в других файлах .cpp.

challenge icon

Задание

Средне

Заголовочный файл math_utils.h объявляет две функции. Реализуйте их в math_utils.cpp:

  • doubleValue(int x) — возвращает x * 2
  • square(int x) — возвращает x * x

Обязательно подключите заголовочный файл в вашем .cpp файле.

Шпаргалка

Сборка C++ происходит в три этапа: Препроцессинг, Компиляция и Линковка.

Препроцессинг — директивы #include разрешаются, копируя содержимое заголовочных файлов в исходные файлы:

#include <iostream>    // Системный заголовочный файл
#include "my_file.h"   // Ваш собственный заголовочный файл

Компиляция — каждый файл .cpp компилируется независимо в объектный файл (.o):

// math_utils.cpp компилируется в math_utils.o
// main.cpp компилируется в main.o

Линковка — объектные файлы объединяются в финальный исполняемый файл:

// math_utils.o + main.o → program.exe

Заголовочный файл объявляет то, что существует (прототипы). Файл .cpp предоставляет фактическую реализацию. Линковщик связывает вызовы в main.cpp с реализациями в других файлах .cpp.

Попробуйте сами

#include <iostream>
#include "math_utils.h"

int main() {
    int num;
    std::cin >> num;
    
    std::cout << "Double: " << doubleValue(num) << std::endl;
    std::cout << "Square: " << square(num) << std::endl;
    std::cout << "Build successful" << std::endl;
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование