Здравствуйте, maks1180, Вы писали:
M>Деларации и имплементация сразу. Можно конечно поробовать в таком стиле традиционным способом скомпилировать, но тогда будет много имплементаций одного класса (в каждом .o файле, где он используется). И могут быть проблемы: по разному реализовано может быть (в зависимости от макросов и опций компилятора), неопределённость при линковке — неизвестно какую реализацию возмёт линковщик. Поэтому я считаю, что опастно так делать при традиционном способе компиляции.
M>Может я что-то упустил ? Покритикуйте плиз аргументированно.
При сборке sqlite такой термин называется
https://www.sqlite.org/amalgamation.html,
в cmake это называется
https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html .
Очевидно такой способ компиляции медленнее начиная с какого-то относительно небольшого проекта.
Тот же единый файл sqlite компилируется секунд 30 в режиме оптимизации, а компиляция одного из сотни файлов
sqlite и линковка займет максимум пару секунд. А проблему с повторным парсингом одних и тех же больших системных
заголовочных файлов нормально решает использование "precompiled headers", а скоро и модули можно будет использовать.