Mediumlinkage

Чем internal linkage отличается от external linkage?

1Постановка

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

2Решение

External linkage — symbol виден из других TU (обычные функции и non-static глобалы). Internal linkage — виден только в текущем TU.

// external (по умолчанию) — видна везде
void publicFunc();

// internal через static — только в этом .cpp
static void helper() { /* ... */ }

// internal через анонимный namespace (современный стиль)
namespace {
    void anotherHelper() { /* ... */ }
    struct Internal { /* ... */ };  // работает и для типов
}

const-глобалы в C++ по умолчанию internal (отличие от C). inline-функция имеет external linkage, но может определяться в нескольких TU.

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

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

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