我正在处理的静态库项目中启用了“预编译头”。环顾其他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,intelliSense错误消失了。这是使用预编译头的正确方法吗?在头文件中包含stdafx.h有什么含义?

最佳答案

您必须在文件开头添加#pragma一次
答案在这里:PCH Warning: header stop cannot be in a macro or #if block - Visual C++ 2010 Express SP1
宏或如果块可视c- 2010年exp

关于c++ - 预编译头IntelliSense错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18739176/

10-15 17:22