预编译标头 IntelliSense 错误
Posted
技术标签:
【中文标题】预编译标头 IntelliSense 错误【英文标题】:Precompiled Headers IntelliSense Error 【发布时间】:2013-09-11 10:51:22 【问题描述】:我在我正在处理的静态库项目中启用了预编译头文件。环顾其他 *** 问题,#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 有什么影响?
【问题讨论】:
这不完全是您问题的解决方案,但在 Visual Studio 中,我转到项目属性 -> C/C++ -> 高级并将我的 PCH 作为强制包含,然后不用担心再来一次! 【参考方案1】:您必须在文件开头添加一次#pragma 答案在这里:PCH Warning: header stop cannot be in a macro or #if block - Visual C++ 2010 Express SP1 macro-or-if-block-visual-c-2010-exp
【讨论】:
以上是关于预编译标头 IntelliSense 错误的主要内容,如果未能解决你的问题,请参考以下文章