预编译标头IntelliSense错误

时间:2013-09-11 10:51:23

标签: c++ visual-studio precompiled-headers visual-studio-2013

我在我正在处理的静态库项目中启用了预编译标题。看看其他StackOverflow问题,似乎#include“stdafx.h”的关键位置在.cpp文件中,而不是.h文件。

但是,当我在Visual Studio中执行此操作时,会收到IntelliSense错误:

  

1智能感知: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会有什么影响?

1 个答案:

答案 0 :(得分:-1)

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