Предварительно скомпилированный заголовок (зачем включать его в каждый исходный файл)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Предварительно скомпилированный заголовок (зачем включать его в каждый исходный файл)

Сообщение Anonymous »


Я пытаюсь понять предварительно скомпилированные заголовки. Поэтому я создал следующий пример проекта:

pch.hpp

#include pch.cpp

#pragma Once #include "pch.hpp" Вектор.hpp

#pragma Once #include "pch.h" класс Вектор { публика: Вектор (const size_t N, const int init); частный: std::vector m_data; }; Вектор.cpp

#pragma Once #include "pch.hpp" #include "Вектор.hpp" Vector::Vector(const size_t N, const int init) : m_data(N, инициализация) { } Источник.cpp

#include "pch.hpp" #include "Вектор.hpp" интервал основной() { константный вектор v1(3, 5); } Я сделал это в VS 2022, пометив pch.hpp как предварительно скомпилированный файл заголовка в разделе Свойства проекта --> C++ - -> Предварительно скомпилированные заголовки --> Файл заголовка с Использованием (/Yu). И установите pch.cpp как Create (/Yc).

Теперь, когда я удаляю #include "pch.hpp" в Vector.cpp или Source.cpp, я получаю следующую ошибку:

Файл Vector.cpp Строка 10 Ошибка серьезности Код С1010 Описание неожиданного конца файла при поиске предварительно скомпилированного заголовка. Вы забыли добавить #include «pch.hpp» в свой источник? Однако, если я отключу предварительно скомпилированные заголовки, все компилируется нормально. Как и следовало ожидать.

Итак, похоже, что с включенными предварительно скомпилированными заголовками мне теперь нужно поместить #include "pch.hpp" в каждый второй исходный файл? Несмотря на то, что #include "Vector.hpp" уже включает pch.hpp? Можно ли избежать добавления #include "pch.hpp" во все остальные исходные файлы?

Я спрашиваю, потому что у меня гораздо большая база кода (чем в примере выше), и я подумал, что могу заменить все экземпляры #include на #include " pch.hpp" и готово. Но необходимость добавления #include "pch.hpp" к многочисленным файлам cpp требует от меня работы со многими файлами (и это кажется нелогичным).

Извиняюсь за возможно наивный вопрос, так как я новичок в предварительно скомпилированных заголовках.
Ответить

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

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

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

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

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