какую пользу можно извлечь из подобной конструкции:
namespace{
int i;
}
Ответ
Польза та же, что и при использовании ключевого слова static — избегание проблем с ODR(one definition rule). Если, к примеру, в заголовке у Вас будет int i;, тогда при подключении в 2 и более .cpp файла Вы получите ошибку линоквки — один и тот же символ определён дважды. Если же Вы напишете static int i;, то i станет локальным для каждого объектного файла в который i попадает — т.е. в каждом cpp будет свой i, в отличии от первого вариант, где i один на всю программу. То же самое происходит когда Вы пишите
namespace{
int i;
}
i получает внутреннее связывание и, следовательно, проблемы с ODR не будет.
Комментариев нет:
Отправить комментарий