покритикуйте метод компиляции
От: maks1180  
Дата: 19.11.22 16:13
Оценка:
Покритикуйте плиз такой метод компиляции, создаётся файл main.cpp в него добавляются
#include myfile1.cpp"
#include myfile2.cpp"
и так далее, далее gcc main.cpp компилируется за 1 вызов.
Может быть можно это сделать без создания временного файла main.cpp ?

Сравнение с традиционным способом компиляции (когда каждый .cpp в отдельный .o файл)

Недостатки:
— время сборки при изменении 1 файла, такое же как при сборки целиком проекта.
— #define одного cpp могут повлять на другой
— конфликт имён может быть, если имена глобальных функций или переменных совпадут
— разные опции компиляции приходиться задавать через #pragma
— gcc не все неиспользуемые функции выкидывает. ( НЕ разобрался пока ещё почему так).

Преимущество:
— время сборки целиком проекта значительно быстрее. Например препроцессор добавляет 2Мб в каждому файлу где есть #include <windows.h>
— не нужно заботиться о указании noexcept так как когда все функции в одном объектном файле, компилятор сам может правильно определить данный атрибут функции.
— можно писать в удобном стиле, когда деларация и имплементация сразу. Есть какой-то термин для данного стиля ?


Деларации и имплементация сразу. Можно конечно поробовать в таком стиле традиционным способом скомпилировать, но тогда будет много имплементаций одного класса (в каждом .o файле, где он используется). И могут быть проблемы: по разному реализовано может быть (в зависимости от макросов и опций компилятора), неопределённость при линковке — неизвестно какую реализацию возмёт линковщик. Поэтому я считаю, что опастно так делать при традиционном способе компиляции.

Может я что-то упустил ? Покритикуйте плиз аргументированно.
===============================================
(реклама, удалена модератором)
Отредактировано 19.11.2022 16:31 maks1180 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.