not-precompiled headers 如果包含预编译的 headers 还是仅用于 .cpp 文件,是否使用预编译的 headers?
Do not-precompiled headers use precompiled headers if they are Included or are they for .cpp files only?
Visual Studio 2022:
我想在我的 .cpp 文件中包含预编译的 header,但我不知道这是否值得,因为我还需要包含一个 non-precompiled header 与预编译的 header.
中几乎相同的 header
non-precompiled header 会使用预编译的 header 还是会在每次编译时再次生成代码?
菲律宾共产党:
#pragma once
#include "Precompiled.h"
#include "No-Precompiled.h" // Basic Headers: Windows.h, Psapi.h
int main()
{
// Functions that I need from "No-Precompiled.h" but I can't Precompile it since changes in it are made on regular basis
}
No-Precompiled.h:
#pragma once
#include <windows.h>
#include <Psapi.h>
#include <d3d11.h>
class Template
{
public:
//Functions that need many same Headers.
}
Precompiled.h:
#pragma once
#include <windows.h>
#include <Psapi.h>
#include <d3d11.h>
#include <limits>
#include <complex>
#include <filesystem>
#include <iostream>
#include <string>
#include <chrono>
#include <thread>
#include <tchar.h>
#include <wincred.h>
#include <complex>
#include <math.h>
- 我应该只预编译 .cpp 文件使用的 headers(不多)还是有办法允许 No-Precompiled headers 使用预编译headers?
使用 pre-compiled headers 变化不大。特别是,header 守卫继续工作。 <windows.h>
的 header 守卫也包含在 pre-compiled 状态中。因此,当编译器第二次看到 <windows.h>
时,它会立即被跳过。
在您的例子中,No-Precompiled.h
header 变得非常微不足道,因为它的所有 header 都已包含在内。您只是在编译 Template
.
不过,我对特定的一组预编译 header 有点好奇。 PSapi、DirectX 和 IOstream?我真的无法想象一个大程序,你有很多文件使用所有这些文件。请注意,<iostream>
实际上是关于 std::cout
,这对 DirectX 程序没有多大意义。
Visual Studio 2022:
我想在我的 .cpp 文件中包含预编译的 header,但我不知道这是否值得,因为我还需要包含一个 non-precompiled header 与预编译的 header.
中几乎相同的 headernon-precompiled header 会使用预编译的 header 还是会在每次编译时再次生成代码?
菲律宾共产党:
#pragma once
#include "Precompiled.h"
#include "No-Precompiled.h" // Basic Headers: Windows.h, Psapi.h
int main()
{
// Functions that I need from "No-Precompiled.h" but I can't Precompile it since changes in it are made on regular basis
}
No-Precompiled.h:
#pragma once
#include <windows.h>
#include <Psapi.h>
#include <d3d11.h>
class Template
{
public:
//Functions that need many same Headers.
}
Precompiled.h:
#pragma once
#include <windows.h>
#include <Psapi.h>
#include <d3d11.h>
#include <limits>
#include <complex>
#include <filesystem>
#include <iostream>
#include <string>
#include <chrono>
#include <thread>
#include <tchar.h>
#include <wincred.h>
#include <complex>
#include <math.h>
- 我应该只预编译 .cpp 文件使用的 headers(不多)还是有办法允许 No-Precompiled headers 使用预编译headers?
使用 pre-compiled headers 变化不大。特别是,header 守卫继续工作。 <windows.h>
的 header 守卫也包含在 pre-compiled 状态中。因此,当编译器第二次看到 <windows.h>
时,它会立即被跳过。
在您的例子中,No-Precompiled.h
header 变得非常微不足道,因为它的所有 header 都已包含在内。您只是在编译 Template
.
不过,我对特定的一组预编译 header 有点好奇。 PSapi、DirectX 和 IOstream?我真的无法想象一个大程序,你有很多文件使用所有这些文件。请注意,<iostream>
实际上是关于 std::cout
,这对 DirectX 程序没有多大意义。