C++ 预编译头智能感知错误

C++ 预编译头智能感知错误,c++,visual-studio,precompiled-headers,visual-studio-2013,C++,Visual Studio,Precompiled Headers,Visual Studio 2013,我在正在处理的静态库项目中启用了预编译头。环顾其他StackOverflow问题,似乎要包含stdafx.h的关键位置是在.cpp文件中,而不是在.h文件中 但是,当我在Visual Studio中执行此操作时,会出现IntelliSense错误: 1 IntelliSense:PCH警告:标头停止不能在宏或if块中。未生成IntelliSense PCH文件\公共\核心\几何\椭球体.h 9 即使存在此IntelliSense错误,静态库项目也会成功编译 .h文件由以下类声明组成: #ifnd

我在正在处理的静态库项目中启用了预编译头。环顾其他StackOverflow问题,似乎要包含stdafx.h的关键位置是在.cpp文件中,而不是在.h文件中

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

1 IntelliSense:PCH警告:标头停止不能在宏或if块中。未生成IntelliSense PCH文件\公共\核心\几何\椭球体.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 Answare在这里:
macro-or-if-block-visual-c-2010-exp

这并不能完全解决您的问题,但在VisualStudio中,我将转到project properties->c/c++->Advanced并将我的PCH作为强制包含,然后再也不用担心它了!