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 подскажет развёрнутый ответ в реальном времени.