1

我在我正在处理的静态库项目中启用了预编译头文件。环顾其他 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 有什么影响?

4

1 回答 1

-1

您必须在文件开头添加一次#pragma 答案在这里:PCH 警告:标头停止不能在宏或#if 块中 - Visual C++ 2010 Express SP1 宏或-if-block-visual-c-2010 -exp

于 2014-11-13T07:34:00.887 回答