Есть ли недостатки в наличии символа с внешней связью (иначе, чем глобальное пространство пространства имен/столкновение)? Например, я бы подумал, что если у меня есть функция, которую я никогда не вызываю, если она имеет внутреннюю связь, компилятор может просто отказаться от нее, но если она внешняя, компилятор должен оставить этот код, потому что кто-то может ссылаться на него позже , Это верно? Есть ли другие недостатки?Недостатки внешних ссылок
Я спрашиваю, потому что я знаю, что вместо статического ключевого слова рекомендуется использовать неназванные пространства имен, но поскольку символы в неназванном пространстве имен по-прежнему имеют внешнюю связь, они будут страдать от вышеупомянутого недостатка (если я прав по этому поводу) и так что не совсем лучше, чем статические функции, подобные стандарту.
* Функция в неназванном пространстве имен может быть отброшена без влияния на программу * - Да, но так ли? Вы знаете, что компиляторы действительно это делают? – baruch
@baruch: Да, gcc делает это на уровнях оптимизации> = '-O1'. –