Плохо ли, если я включаю исходный код в заголовочный файл (например, для определения функций, классов и т. Д.)? Я читал, что это не рекомендуется, но также и для того, чтобы это было прекрасно ... есть ли правильный ответ?Исходный код в заголовочных файлах
ответ
Функции, которые не обозначены как inline
, не могут входить в заголовки, потому что, если они включаются дважды в вашу программу, компоновщик выдаст вам сообщение об ошибке. Обратите внимание, что методы внутри классов рассматриваются как встроенные.
Пока вы используете только шаблоны и встроенный код, вы можете поместить свой код в заголовок. Но затем он скомпилируется после для каждого исходного файла, который включает его, замедляя сборку. Вы можете противодействовать этому с предварительно скомпилированным заголовком, и тогда единственным реальным недостатком является отсутствие хорошего «частичного» здания, но сборка в целом работает прилично.
Так что это действительно сводится к простому компиляции, и я думаю, что предварительно скомпилированные заголовки могут в основном противостоять отрицательным эффектам. Но я по-прежнему предпочитаю правильные исходные файлы много раз.
Один случай, когда общие не встроенные функции закодированы в общем заголовке для многопроцессорного приложения (в отличие от многопотокового). Код для каждого процесса имеет один исходный файл, который включает общий заголовок с этими общими функциями.
- 1. Инкапсуляция в заголовочных файлах
- 2. Объявления классов в заголовочных файлах
- 3. Переменные определения в заголовочных файлах
- 4. Константные указатели в заголовочных файлах
- 5. Использование std в заголовочных файлах
- 6. Применение «/» в некоторых заголовочных файлах
- 7. ошибка в STRUCT decleration в заголовочных файлах
- 8. Использование нескольких структур в заголовочных файлах C++
- 9. Как имитировать функции в заголовочных файлах?
- 10. Нетипизированные Аргументы в заголовочных файлах C
- 11. Объявление переменных в заголовочных файлах C++
- 12. Ошибки в макроопределении и заголовочных файлах
- 13. Разрешение круговой ссылки в заголовочных файлах C++
- 14. Условная компиляция в заголовочных файлах система
- 15. Включая ЬурейеЕ в двух заголовочных файлах
- 16. Объекты AppKit в заголовочных файлах Obj-C++?
- 17. C++, объект декларации в заголовочных файлах
- 18. В чем причина предоставления поддерева в частных заголовочных файлах яблока
- 19. Vs2008: отключить предупреждения в заголовочных файлах за пределами проекта
- 20. Реализация встроенные функции в заголовочных файлах против .cpp файлов
- 21. Как инициализируются константы в заголовочных файлах Objective-C?
- 22. неоднозначности в заголовочных файлах при построении андроида ICS
- 23. VS 2005 не обнаруживает изменений в заголовочных файлах проекта C++
- 24. Почему cscope не ищет определения в заголовочных файлах?
- 25. Обмен переменными и структурами в заголовочных файлах по всей программе
- 26. Код в файлах заголовков всегда будет встроен?
- 27. Прототип функции в заголовочных файлов
- 28. Исходный код для Android Исходный код
- 29. Android SDK исходный код
- 30. карта ConcurrentModificationException в заголовочных
Возможный дубликат [Включить исходный код в файл заголовка?] (Http://stackoverflow.com/questions/4588727/should-you-include-source-code-in-a-header-file) –
Вы хотите определить свои классы и функции в файлах заголовков, для чего они нужны. В общем, вы реализуете свои классы и функции в файлах .c. – t3dodson
Основным преимуществом библиотек только для заголовков является то, что они избегают всей работы и затрудняют сборку бинарных файлов библиотеки. Например, для типичной подбиблиотеки только для заголовка Boost вам нужно всего лишь указать путь включения и выйти. Для других подбиблиотек здание Boost может быть очень трудоемким, трудно получить право. –