Я работаю над проектом на работе, где в файлах заголовков загружаются и загружаются коды. Если бы я использовал Visual Studio, это не было бы проблемой, так как это предварительно скомпилированные заголовки и т. Д., Но это код Linux GCC.Реализация заголовков и ключевое слово inline для оптимизации
В любом случае, это начинает немного беспокоиться о времени компиляции. Конечно, шаблоны должны оставаться в заголовках и т. Д., Но большая часть этого кода может быть извлечена в файлы реализации и связана как статическая библиотека. Все проекты используют эти заголовки и собираются каждый раз, поэтому имеет смысл создать статический lib.
Реализации в файлах заголовков встроены или это только подсказка, строка ключевого слова inline? Этот код очень важен для времени, и меня беспокоит перемещение реализаций из заголовков. Могу ли я достичь того же, если я использую ключевое слово inline, а не реализацию в файлах заголовков?
** ОБНОВЛЕНИЕ ** Я знаю, что inline является лишь подсказкой для компилятора. Я не контролирую все в проекте, и я просто хочу переместить все из заголовков в библиотеку, не влияя на производительность. Это будет попытка попробовать и посмотреть? Я просто хочу сохранить производительность точно так же, но увеличить время компиляции.
Вы можете использовать предварительно скомпилированные заголовки с gcc, например. http://stackoverflow.com/questions/58841/precompiled-headers-with-gcc – doctorlove
Если вы переместите реализацию из заголовка, то вы не можете (обычно) объявить ее встроенной. Встроенные функции должны быть определены в каждой единицы перевода, которая их использует. –
Вы пытались построить единое целое? http://buffered.io/posts/the-magic-of-unity-builds Явный шаблонный instanciation также может помочь. вы также можете попытаться разбить заголовочные файлы в реализации встроенных функций и отдельный заголовок с их определением. – Alex