No Image

Include pch h что это

СОДЕРЖАНИЕ
2 просмотров
11 марта 2020

Предварительно откомпилированные заголовки (англ. pre-compiled headers ) — в средах программирования на языках Си и Си++ — способ ускорить компиляцию программ за счёт предварительной обработки так называемых заголовочных файлов, которые содержат интерфейсы модулей и, согласно нормам данных языков программирования, подключаются к программе путём прямой вставки их текстов в тело основной программы с помощью специальной директивы препроцессора #include . Предкомпилированные заголовки сохраняются на диске в виде файлов во внутреннем формате компилятора и при повторных компиляциях проекта время на их обработку и подключение существенно сокращается.

Содержание

Предпосылки [ править | править код ]

Язык программирования Си для подключения внешнего модуля использовал заголовочные файлы. Это упрощает компилятор, и даёт некоторую гибкость — и это работало в течение 20 лет, пока заголовки были небольшими, а файлов в проекте — мало. С укрупнением программных проектов время компиляции стало расти квадратично [1] — увеличивается как количество единиц компиляции, так и количество заголовков, подключённых к каждой конкретной единице. В особо крупных проектах полная перекомпиляция занимает десятки минут и чаще выполняется во время ночной сборки, чем на рабочих местах программистов.

К тому же язык программирования Си относится к семейству LR(1), и поэтому компиляторы Си медленнее, например, Паскаля (который LL(1)) [ источник не указан 2375 дней ] .

Чтобы сократить время компиляции, и были разработаны предкомпилированные заголовки. Поскольку заголовочные файлы меняются гораздо реже файлов, содержащих код программы (а библиотечные — практически никогда), разумным средством оптимизации оказалось выполнять предварительную обработку заголовков, и преобразование их в файлы специального вида, которые при компиляции программы можно подключать, минуя первые стадии компиляции. За счёт прекомпиляции заголовков полной обработке компилятором подвергаются только изменённые части программы. Впрочем, предварительная компиляция заголовка помогает не всегда:

  1. При изменении любого из предкомпилируемых заголовков перекомпилируется весь набор.
  2. При полной перекомпиляции выигрыш по времени получается, когда один и тот же набор применяется как минимум в двух единицах компиляции.
Читайте также:  Момент инерции конуса относительно оси

Поэтому, как правило, в предкомпилируемый набор включают всевозможные библиотечные заголовки, крупные и в то же время редко изменяющиеся.

Реализации [ править | править код ]

Embarcadero C++ Builder [ править | править код ]

Предкомпилируется всё, что идёт до директивы #pragma hdrstop .

GCC [ править | править код ]

При компиляции h -файлов GCC автоматически предполагает, что требуется делать предкомпилированный заголовок (либо это можно указать через командную строку, ключ -x ). Большинство оболочек программирования (например, Code::Blocks) позволяют указывать, какие файлы предкомпилировать. Стандартным решением будет «свалить» наиболее используемые, но редко меняющиеся заголовки в один h -файл и подключать его самым первым.

Microsoft Visual C++ [ править | править код ]

Ситуация похожа на GCC. Visual C++ версии 6.0 и выше предкомпилирует заголовок со стандартным именем — stdafx.h (это имя можно изменить опцией компилятора).

Обновл. 30 Ноя 2019 |

Перед написанием нашей первой программы мы ещё должны кое-что узнать.

Теория

Во-первых, несмотря на то, что код ваших программ находиться в .cpp файлах, эти файлы добавляются в проект. Проект содержит все необходимые файлы вашей программы, а также сохраняет указанные вами настройки вашей IDE. Каждый раз, при открытии проекта, он запускается с того момента, на котором вы остановились в прошлый раз. При компиляции программы, проект говорит компилятору и линкеру, какие файлы нужно скомпилировать, а какие связать. Стоит отметить, что файлы проекта одной IDE не будут работать в другой IDE. Вам придётся создать новый проект (в другой IDE).

Во-вторых, есть разные типы проектов. При создании нового проекта, вам нужно будет выбрать его тип. Все проекты, которые мы будем создавать в этих уроках, будут консольного типа. Это означает, что они запускаются в консоли (аналог командной строке). По умолчанию, консольные приложения не имеют графического интерфейса пользователя (GUI) и компилируются в автономные исполняемые файлы. Это идеальный вариант для изучения C++, так как он сводит всю сложность к минимуму.

Читайте также:  Gtx 650 vs radeon 6850

В-третьих, при создании нового проекта большинство IDE автоматически добавят ваш проект в рабочее пространство. Рабочее пространство — это своеобразный контейнер, который может содержать один или несколько связанных проектов. Несмотря на то, что вы можете добавить несколько проектов в одно рабочее пространство, всё же рекомендуется создавать отдельное рабочее пространство для каждой программы. Это намного упрощает работу для новичков.

Традиционно, первой программой на новом языке программирования является всеми известная программа «Hello, world!». Мы не будем нарушать традиции 🙂

Пользователям Visual Studio

Для создания нового проекта в Visual Studio 2017, вам нужно сначала запустить эту >"Файл" > "Создать" > "Проект" :

Дальше появится диалоговое окно, где вам нужно будет выбрать "Консольное приложение Windows" из вкладки "Visual C++" и нажать "ОК" :

Также вы можете указать имя проекта (любое) и его расположение (рекомендую ничего не менять) в соответствующих полях.

В текстовом редакторе вы увидите, что уже есть некоторый текст и код – удалите его, а затем напечатайте или скопируйте следующий код:

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском».

Закрыт 12 месяцев назад .

При компилировании этого кода:

fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "pch.h"" в источник.

Почему так – непонятно. Все библиотеки подключил. (Работал в VS)

1 ответ 1

Если вы не используете предварительно скомпилированные заголовки в своем проекте, установите для свойства Создать / Использовать предварительно скомпилированные заголовки исходных файлов значение Не использовать предварительно скомпилированные заголовки. Чтобы установить этот параметр компилятора, выполните следующие действия:

На панели «Обозреватель решений» проекта щелкните правой кнопкой мыши имя проекта и выберите «Свойства».

Читайте также:  Белтелеком настройка wifi на компьютере

На левой панели щелкните папку C / C ++.

Щелкните по узлу «Предварительно скомпилированные заголовки».

На правой панели щелкните «Создать / использовать предварительно
скомпилированный заголовок», а затем нажмите «Не использовать
предварительно скомпилированные заголовки».

Комментировать
2 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector