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:

菲律宾共产党:

#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>

使用 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 程序没有多大意义。