我在我正在处理的静态库项目中启用了预编译标题。看看其他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会有什么影响?
答案 0 :(得分:-1)
您必须在文件开头添加一次#pragma 答案在这里:PCH Warning: header stop cannot be in a macro or #if block - Visual C++ 2010 Express SP1 宏观或-如果 - 嵌段 - 视觉-C-2010-EXP