Предварительно скомпилированный заголовок (зачем включать его в каждый исходный файл) ⇐ C++
-
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 требует от меня работы со многими файлами (и это кажется нелогичным).
Извиняюсь за возможно наивный вопрос, так как я новичок в предварительно скомпилированных заголовках.
Я пытаюсь понять предварительно скомпилированные заголовки. Поэтому я создал следующий пример проекта:
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 требует от меня работы со многими файлами (и это кажется нелогичным).
Извиняюсь за возможно наивный вопрос, так как я новичок в предварительно скомпилированных заголовках.
Мобильная версия