Daily bit(e) C++. Анонимные пространства имен
Добавлено 5 ноября 2026 в 04:20
Daily bit(e) C++ 169, инструмент C++11 для управления связыванием символов – анонимные пространства имен.

Анонимные (безымянные) пространства имен – это отличный инструмент C++11 для управления связыванием символов.
Все символы, находящиеся внутри безымянного пространства имен, обладают внутренним связыванием – это означает, что они видны только в пределах той единицы трансляции, в которой определены.
// unit.h
namespace MyLib
{
void function();
}
// unit.cc
#include "unit.h"
namespace // безымянное пространство имен
{
void internal_function() {}
}
namespace MyLib
{
void function()
{
internal_function(); // OK, функция видима внутри единицы трансляции
}
}
void other_function() {}
// main.cc
#include "unit.h"
int main()
{
MyLib::function(); // OK, доступна через заголовочный файл
void other_function(); // ручное объявление
other_function(); // OK, внешнее связывание
void internal_function(); // ручное объявление
internal_function(); // Ошибка линковки, символ не виден
}
