JavaRush
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Declaration vs definition: источник линковочных ошибок

    C++ SELF
    29 уровень,0 лекция
    Разбираем, почему в многофайловом C++ проекте «компиляция прошла, а сборка упала»: чем отличается declaration (обещание существования) от definition (реальное тело/память), как устроены единицы трансляции ( translation unit), что именно проверяет компилятор и что требует линкер, и как правильно разносить объявления по .hpp и определения по .cpp на примере мини-проекта TaskBook.
    Открыта
  • Нельзя определить одно и то же дважды

    C++ SELF
    29 уровень,1 лекция
    Разбираем правило ODR ( One Definition Rule) в многофайловых проектах на C++: чем отличается объявление от определения, почему линкер ругается на multiple definition, как #pragma once защищает только от повторного включения внутри одного .cpp, чем опасны определения функций и глобальных переменных в .hpp, и как чинить проблему «по учебнику» (объявление в заголовке, определение в одном .cpp). В конце — типичные ошибки и аккуратное введение в роль inline.
    Открыта
  • inline‑функции и inline‑переменные

    C++ SELF
    29 уровень,2 лекция
    Разбираем, почему определение функций и переменных прямо в заголовках ( .hpp) часто приводит к ошибкам линковки multiple definition, что на самом деле делает ключевое слово inline (оно про ODR, а не «ускорение»), как правильно писать inline‑функции и inline‑переменные (в том числе inline constexpr), и где inline начинает вредить сборке и архитектуре.
    Открыта
  • static и anonymous namespace

    C++ SELF
    29 уровень,3 лекция
    Разбираем, как в C++ «прятать» служебные имена внутри .cpp: что такое external/ internal linkage, как работают static на уровне файла и namespace {}, почему static в заголовке размножает сущности по всем единицам трансляции, как internal linkage помогает избегать конфликтов имён и откуда берётся линковочная ошибка вида undefined reference.
    Открыта
  • Типовые linker‑ошибки

    C++ SELF
    29 уровень,4 лекция
    Разбираем самые частые ошибки линковки в многофайловых проектах C++: чем отличаются multiple definition и undefined reference, как ODR и текстовая природа # include приводят к «размножению» символов, когда применять extern, inline, static и namespace, и как диагностировать проблему по протоколу (включая блок‑схему и мини‑проект MiniPlanner).
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush