Карточка Middle Сборка и линковка обновлено

inline-переменные

Вопрос

Как объявить глобальную константу или переменную в заголовке без ошибки multiple definition?

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

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

inline constexpr int kMax = 100; или inline std::string gname; (C++17). Одинаковые inline-определения разрешены во всех единицах трансляции, линковщик оставит одну копию. constexpr на уровне пространства имён без inline имеет внутреннее связывание: у каждого файла своя копия.

Ответ

inline constexpr int kMax = 100; или inline std::string g_name; (C++17). Одинаковые inline-определения разрешены во всех единицах трансляции, линковщик оставит одну копию. constexpr на уровне пространства имён без inline имеет внутреннее связывание: у каждого файла своя копия.

Разбор

inline constexpr int kMax = 100; или inline std::string g_name; (C++17). Одинаковые inline-определения разрешены во всех единицах трансляции, линковщик оставит одну копию. constexpr на уровне пространства имён без inline имеет внутреннее связывание: у каждого файла своя копия.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.