我在我正在处理的静态库项目中启用了预编译头文件。环顾其他 StackOverflow 问题,#include "stdafx.h" 的关键位置似乎在 .cpp 文件中,而不是 .h 文件中。
但是,当我在 Visual Studio 中执行此操作时,出现 IntelliSense 错误:
1 IntelliSense:PCH 警告:标头停止不能在宏或#if 块中。未生成 IntelliSense PCH 文件。....\Common\Core\Geometry\Ellipsoid.h 9
静态库项目确实编译成功,即使出现此 IntelliSense 错误。
.h 文件包含此类声明:
#ifndef GEOMETRY_ELLIPSOID_H
#define GEOMETRY_ELLIPSOID_H
class Ellipsoid { // 'class' is underlined with a red line (error)
// ...
};
#endif // !GEOMETRY_ELLIPSOID_H
.cpp 定义了在头文件中声明的类:
#include "Common\Core\stdafx.h"
#include "Ellipsoid.h"
// ...
通过在标头中包含 stdafx.h,智能感知错误消失。这是使用预编译头文件的正确方法吗?在标头中包含 stdafx.h 有什么影响?