Из-за странное предупреждение C ++ о видимости некоторых символов и интересный ответ , ссылающийся на документ, который описывает различные типы и случаи видимости (раздел 2.2.4 о классах C ++), я начал задаваться вопросом, нужно ли вообще автономному приложению экспортировать символы вообще (кроме main
- или это нужно?).
Почему именно их необходимо экспортировать в автономные приложения?
Является ли "экспортированный символ" синонимом для "видимого символа"? То есть скрытый символ - это символ, который не экспортируется?
Различаются ли объектные файлы между видимыми символами и скрытыми символами? Или это сделано на этапе связывания, так что экспортируются только видимые символы?
Имеет ли значение видимость символов в случае отладочной информации? Или это полностью независимо, то есть я бы также получил хороший след, если бы все символы были скрыты? Как STABS / DWARF связан с видимостью символов?