在 .cpp 文件中包含预编译的 header 和 non-precompiled header 会导致 .cpp 文件无法识别 non-precompiled header
Including a precompiled header and a non-precompiled header in a .cpp file causes the .cpp file to not recognize the non-precompiled header
Visual Studio 2022:
我包含了一个简单的 header 来存储基本功能,如打印文本或执行功能到我的 .cpp 文件,但是在包含一个预编译的 header 存储 Windows.h .cpp 之后文件无法识别 non-precompiled header.
中的 functions/variables
菲律宾共产党:
#pragma once
#include "basics.h"
#include "precompiled header.h"
int main()
{
Basics::Print("Something"); // C2653 Basics is not a class or namespace name
}
basics.h:
class Basics
{
public:
static void Print(const char* format, ...);
}
预编译header.h:
#pragma once
#include <Windows.h>
// This header is than #included in a .cpp file.
- 如果某些 header 需要其他 header 但由于只有 .cpp 文件可以访问而无法访问它们,那么预编译 header 的意义何在?您真的要预编译 headers + 将 headers 包含在另一个需要它们的 headers 中吗?
预编译的 header 必须在包含列表中排在第一位,因为它会删除它之前的所有内容。
Visual Studio 2022:
我包含了一个简单的 header 来存储基本功能,如打印文本或执行功能到我的 .cpp 文件,但是在包含一个预编译的 header 存储 Windows.h .cpp 之后文件无法识别 non-precompiled header.
中的 functions/variables菲律宾共产党:
#pragma once
#include "basics.h"
#include "precompiled header.h"
int main()
{
Basics::Print("Something"); // C2653 Basics is not a class or namespace name
}
basics.h:
class Basics
{
public:
static void Print(const char* format, ...);
}
预编译header.h:
#pragma once
#include <Windows.h>
// This header is than #included in a .cpp file.
- 如果某些 header 需要其他 header 但由于只有 .cpp 文件可以访问而无法访问它们,那么预编译 header 的意义何在?您真的要预编译 headers + 将 headers 包含在另一个需要它们的 headers 中吗?
预编译的 header 必须在包含列表中排在第一位,因为它会删除它之前的所有内容。