Easyextern

Что такое extern и для чего используется?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

`extern` — спецификатор linkage. Главное применение: объявление переменной, определённой в другом TU.

// config.h — объявление
extern int globalCounter;

// config.cpp — определение (одно на всю программу)
int globalCounter = 0;

// Внешний TU использует как обычно
void f() { globalCounter++; }   // линкер найдёт определение

// extern template — ускорение компиляции
extern template class std::vector<int>;  // не инстанцировать здесь

const-глобалы в C++ по умолчанию internal; чтобы сделать external — extern const int x = 5;. extern "C" — отдельная роль (linkage specification для C).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.