Почему бы мне не «встроить» каждую функцию в мой проект на C++, чтобы не возиться с файлами cpp?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему бы мне не «встроить» каждую функцию в мой проект на C++, чтобы не возиться с файлами cpp?

Сообщение Anonymous »

Предположим, я разрабатываю инструмент командной строки C++ среднего уровня. У меня есть пара дюжин классов и функция драйвера main(), которая позволяет пользователю делать некоторые вещи с помощью этого инструмента.
Я мог бы иметь один .hpp и один .cpp для каждого класса или основной функциональной единицы, а также Makefile, который преобразует каждый .cpp в .o, а затем связывает все файлы .o в исполняемый файл. Тогда я смогу разместить свои интерфейсы в файлах заголовков со всеми комментариями к документации, а свои реализации в отдельных файлах.
Или я не мог бы заморачиваться ни с одним из этих шаблонов, поместить все определения функционального модуля в заголовок, пометить их все как встроенные и выбросить .cpp.
В современных компиляторах встроенный на самом деле не имеет большого отношения к тому, является ли компилятор решает встроить какой-либо конкретный вызов функции, и теперь, похоже, он существует, чтобы позволить вам отключить правило одного определения. Если я помещу все определения функций для модуля в заголовочный файл, я смогу хранить их вместе и не переключаться между описанием того, что должен делать код, и реальным кодом. Не имеет значения, включен ли заголовок в несколько единиц перевода, поскольку встроенный позволяет связать результаты вместе.
И если я сделаю это для всего проекта, мне больше не понадобятся никакие единицы перевода, кроме main.cpp, или отдельный шаг связывания. У меня нет инкрементной перекомпиляции, но в проектах малого и среднего размера это не может быть большим недостатком, и у меня есть преимущества процесса сборки с одним вызовом компилятора. Мой код можно повторно использовать в проекте, который действительно использует несколько единиц перевода, из-за всех встроенных.
Мне кажется, что это плохая идея, но кроме «это нетрадиционно» или потери инкрементальной компиляции для больших проектов, я не знаю, что сказать, чтобы убедить людей не делать этого.

Подробнее здесь: https://stackoverflow.com/questions/798 ... f-having-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»