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

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Как работает #include: порядок поиска путей, <> vs ""

    C++ SELF
    28 уровень,0 лекция
    Разбираем, что на самом деле делает директива препроцессора #include, чем отличаются формы < ... > и "...", как устроен порядок поиска заголовков (локальный каталог, include-директории проекта, системные пути), почему важно держать стабильные include-пути через include/, и как отлаживать ошибки вида file not found и конфликты одинаковых имён заголовков.
    Открыта
  • Макросы #define: риски, соглашения по именам

    C++ SELF
    28 уровень,1 лекция
    Разбираем природу препроцессора C++ и то, почему макросы ( #define) опасны: они работают как текстовая подстановка до компиляции, игнорируют типы и области видимости. На примерах показываем проблемы приоритетов операторов, двойного вычисления и побочных эффектов, многострочные макросы и идиому do { ... } while( false). Отдельно фиксируем практические правила именования (префикс проекта TT_, ALL_CAPS) и кейс «уместного» макроса для логирования с __FILE__/ __LINE__.
    Открыта
  • Условная компиляция — #if/#ifdef для платформ и фич

    C++ SELF
    28 уровень,2 лекция
    Разбираем условную компиляцию в C++: чем директивы препроцессора #if/ #ifdef отличаются от обычного if, какие директивы используются для платформ и фич ( #ifdef, #ifndef, #elif, #endif, оператор defined), как организовать конфигурацию через config.hpp, и почему «невыбранная» ветка может годами оставаться сломанной. В конце — практический мини-логгер и типичные ошибки.
    Открыта
  • constexpr / inline / template вместо макросов

    C++ SELF
    28 уровень,3 лекция
    Разбираем, почему макросы опасны как «текстовая магия», и чем их заменять в современном C++: конфиги через inline constexpr, вычисления через constexpr-функции, универсальные утилиты через template, а также единственный «здоровый» кейс для препроцессора — захват места вызова через __FILE__/ __LINE__. В конце — таблица-шпаргалка и схема выбора в mermaid.
    Открыта
  • Отладка макросов

    C++ SELF
    28 уровень,4 лекция
    Разбираем, почему ошибки из-за макросов часто «вылетают» не в месте вызова, а в неожиданной строке: компилятор видит уже раскрытый текст после этапа препроцессора ( #include, #define, #if). Учимся смотреть на «препроцессированный файл», ловить ловушки приоритета операторов ( SQUARE и */ +), повторного вычисления аргумента ( ++), и делать безопасные макросы через do { ... } while( false). В конце — рефакторинг: макрос оставляем только ради __FILE__/ __LINE__, а логику переносим в обычную C++-функцию.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush