Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpNsIG 111 of 150 menu
◀ ▶

Страж заголовка в C++

Один и тот же .h может подключиться в файл дважды.

Если main.cpp включает widget.h, а тот тянет widget.h снова, компилятор увидит двойное объявление класса или функции. Страж заголовка - связка #ifndef, #define и #endif, которая пропускает текст заголовка только при первом включении.

Имя после #define обычно строят из имени файла, например WIDGET_H для widget.h. Оборачиваем объявление функции tick:

#ifndef TICK_H #define TICK_H void tick(); #endif

При первом #include "tick.h" имя TICK_H еще не задано, и текст до #endif попадает в файл. При втором включении имя уже есть, и текст пропускается.

Реализацию по-прежнему держим в tick.cpp:

#include <iostream> #include "tick.h" void tick() { std::cout << "tick\n"; }

Оберните свой заголовок ping.h стражем PING_H.

Добавьте страж LINE_H в заголовок line и подключите его два раза подряд в main.cpp - сборка должна пройти без ошибки повторного объявления.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить