Информация об изменениях

Сообщение Re: покритикуйте метод компиляции от 20.11.2022 12:02

Изменено 20.11.2022 12:08 rg45

Re: покритикуйте метод компиляции
Здравствуйте, maks1180, Вы писали:

M>Покритикуйте плиз такой метод компиляции, создаётся файл main.cpp в него добавляются

M>#include myfile1.cpp"
M>#include myfile2.cpp"
M>и так далее, далее gcc main.cpp компилируется за 1 вызов.
M>Может быть можно это сделать без создания временного файла main.cpp ?

Фактически это отказ от использования принципа раздельной компиляции. То есть, на выходе препроцессора каждый раз будет образовываться мегамонстр, который будет постоянно расти во времени и в один прекрасный момент просто не поместится в оперативной памяти. О каком ускорении компиляции может идти речь при этом?

Другой момент: все анонимные пространства имен сливаются в одно большое. С практической точки зрения это равносильно отказу от использования локальных имен.

И самое главное, пожалуй: такой подход способстует образованию неоправданных паразитных зависимостей в коде, объемы которых будут расти как снежный ком. В долгосрочной перспективе любой проект будет стремиться к такому состоянию, когда в нем невозможно будет сделать даже относительно безобидные изменения, не поломав какую-нибудь функциональность.
Re: покритикуйте метод компиляции
Здравствуйте, maks1180, Вы писали:

M>Покритикуйте плиз такой метод компиляции, создаётся файл main.cpp в него добавляются

M>#include myfile1.cpp"
M>#include myfile2.cpp"
M>и так далее, далее gcc main.cpp компилируется за 1 вызов.
M>Может быть можно это сделать без создания временного файла main.cpp ?

Фактически это отказ от использования принципа раздельной компиляции. То есть, на выходе препроцессора каждый раз будет образовываться мегамонстр, который будет постоянно расти во времени и в один прекрасный момент просто не поместится в оперативной памяти. О каком ускорении компиляции может идти речь при этом?

Другой момент: все анонимные пространства имен сливаются в одно большое. С практической точки зрения это равносильно отказу от использования локальных имен.

И самое главное, пожалуй: такой подход способстует образованию неоправданных паразитных зависимостей в коде, объемы которых будут расти как снежный ком. В долгосрочной перспективе любой проект будет стремиться к такому состоянию, когда в нем невозможно будет сделать даже относительно безобидные изменения, не поломав какую-нибудь функциональность.

P.S. А что с юнит-тестами? Где будут находиться юнит-тесты? Если в одном котле с продакшн-кодом, то все проблемы еще больше усугубляются. Если отдельно, тогда снова вернулись к раздельной компиляции и использованию заголовочных файлов.