[с++] static
static перед функцией (_не_ методом класса) означает, что ее область видимости ограничивается файлом. То есть она не попадет в таблицу символов, и при линковке случится unresolved symbol.
мне как раз такое говорили, но речь шла о методе класса
вот метод можно увидеть в другом файле?
Зато его удается наипать с помощью волшебного слова inline, и получить-таки unresolved symbol
Как-то он непоследовательно себя ведет. Может баг в компиляторе ?
Это непринципиально, но статическая функция попадёт в таблицу символов; только она будет представлена локальным, а не глобальным символом. Поэтому и не увидится извне своего блока компиляции.
но статическая функция попадёт в таблицу символовЯсное дело Как иначе линковщик ее прилинкует?
только она будет представлена локальным, а не глобальным символомА вот про такие тонкости формата .o я не знал, думал просто имя ей генерируется уникальное и все.
Ясное дело Как иначе линковщик ее прилинкует?Вообще говоря, она не обязана даже быть отдельной функцией. Если извне функцию никто не увидит, то компилятор может ее заинлайнить.
Оставить комментарий
Maurog
мне тут сообщили сегодня, что статическая функция, написанная в одном .cpp не будет видна в другом .cpp, если ее там объявитьextern int stat_func;
то есть при сборке проекта второй объектник потеряется чтоли?
короче действует только для статических штуковин
вы согласны с этим? может, кто-нибудь проверял?:)