Предположим, я разрабатываю инструмент командной строки C++ среднего уровня. У меня есть пара дюжин классов и функция драйвера main(), которая позволяет пользователю делать некоторые вещи с помощью этого инструмента.
Я мог бы иметь один .hpp и один .cpp для каждого класса или основной функциональной единицы, а также Makefile, который преобразует каждый .cpp в .o, а затем связывает все файлы .o в исполняемый файл. Тогда я смогу разместить свои интерфейсы в файлах заголовков со всеми комментариями к документации, а свои реализации в отдельных файлах.
Или я не мог бы заморачиваться ни с одним из этих шаблонов, поместить все определения функционального модуля в заголовок, пометить их все как встроенные и выбросить .cpp.
В современных компиляторах встроенный на самом деле не имеет большого отношения к тому, является ли компилятор решает встроить какой-либо конкретный вызов функции, и теперь, похоже, он существует, чтобы позволить вам отключить правило одного определения. Если я помещу все определения функций для модуля в заголовочный файл, я смогу хранить их вместе и не переключаться между описанием того, что должен делать код, и реальным кодом. Не имеет значения, включен ли заголовок в несколько единиц перевода, поскольку встроенный позволяет связать результаты вместе.
И если я сделаю это для всего проекта, мне больше не понадобятся никакие единицы перевода, кроме main.cpp, или отдельный шаг связывания. У меня нет инкрементной перекомпиляции, но в проектах малого и среднего размера это не может быть большим недостатком, и у меня есть преимущества процесса сборки с одним вызовом компилятора. Мой код можно повторно использовать в проекте, который действительно использует несколько единиц перевода, из-за всех встроенных.
Мне кажется, что это плохая идея, но кроме «это нетрадиционно» или потери инкрементальной компиляции для больших проектов, я не знаю, что сказать, чтобы убедить людей не делать этого.
Подробнее здесь: https://stackoverflow.com/questions/798 ... f-having-t
Почему бы мне не «встроить» каждую функцию в мой проект на C++, чтобы не возиться с файлами cpp? ⇐ C++
Программы на C++. Форум разработчиков
1764211398
Anonymous
Предположим, я разрабатываю инструмент командной строки C++ среднего уровня. У меня есть пара дюжин классов и функция драйвера main(), которая позволяет пользователю делать некоторые вещи с помощью этого инструмента.
Я мог бы иметь один .hpp и один .cpp для каждого класса или основной функциональной единицы, а также Makefile, который преобразует каждый .cpp в .o, а затем связывает все файлы .o в исполняемый файл. Тогда я смогу разместить свои интерфейсы в файлах заголовков со всеми комментариями к документации, а свои реализации в отдельных файлах.
Или я не мог бы заморачиваться ни с одним из этих шаблонов, поместить все определения функционального модуля в заголовок, пометить их все как встроенные и выбросить .cpp.
В современных компиляторах встроенный на самом деле не имеет большого отношения к тому, является ли компилятор решает встроить какой-либо конкретный вызов функции, и теперь, похоже, он существует, чтобы позволить вам отключить правило одного определения. Если я помещу все определения функций для модуля в заголовочный файл, я смогу хранить их вместе и не переключаться между описанием того, что должен делать код, и реальным кодом. Не имеет значения, включен ли заголовок в несколько единиц перевода, поскольку встроенный позволяет связать результаты вместе.
И если я сделаю это для всего проекта, мне больше не понадобятся никакие единицы перевода, кроме main.cpp, или отдельный шаг связывания. У меня нет инкрементной перекомпиляции, но в проектах малого и среднего размера это не может быть большим недостатком, и у меня есть преимущества процесса сборки с одним вызовом компилятора. Мой код можно повторно использовать в проекте, который действительно использует несколько единиц перевода, из-за всех встроенных.
Мне кажется, что это плохая идея, но кроме «это нетрадиционно» или потери инкрементальной компиляции для больших проектов, я не знаю, что сказать, чтобы убедить людей не делать этого.
Подробнее здесь: [url]https://stackoverflow.com/questions/79828914/why-shouldnt-i-inline-every-function-in-my-c-project-to-get-out-of-having-t[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия