по сотням файлов проекта, есть ли какие-то гарантии в стандарте или от компиляторов, что, после сборки, дубли будут убраны, а во всех местах использования мы просто сошлёмся на некую зарезервированную константу? Т.е., сможет ли компилятор вот так без ручного вмешательства
// 1.cpp
auto serv_addr = get_serv_addr( "server/address" );
....
// 2.cpp
connect_to_server( get_serv_addr( "server/address" ) );
|
v
// sett.hpp
const char* serv_addr = "server/address";
// 1.cpp
#include <sett.hpp>
auto serv_addr = get_serv_addr( serv_addr );
....
#include <sett.hpp>
// 2.cpp
connect_to_server( get_serv_addr( serv_addr ) );
В стандарте вроде такие гарантии не попадались. Это уже на усмотрение компилятора. Но они вполне могут оптимизировать это
но лучше конечно отрефакторить
ну сделайте inline на переменные в хедерах
Хедеров-то ещё нет, мне интересно было, есть ли кроме читаемости и простоты поддержки дополнительные плюсы у ручного создания хедеров
ну какой то компилятор сможет, но только на линковке это произойдёт
Обсуждают сегодня