static
в области имен пространства означает, что он является локальным для единицы перевода (то есть исходного файла).Если вы определите функцию в заголовочном файле и включите этот заголовок в несколько файлов C ++, вы не получите ошибок переопределения, поскольку все функции будут уникальными (точнее, функции будут иметь внутреннюю связь ).Тот же эффект может быть достигнут с помощью анонимных пространств имен, например
namespace JohnsLib
{
namespace
{
bool foobar() {definition here, won't cause redefinition errors}
}
bool bar();
}