在一个非默认的位置包含头文件stdafx.h

如果stdafx.h和你当前的工程不在一个文件夹下,当你在代码中第一行写下#include "stdafx.h"时,VC编译器会根据编译规则(相关的规则请查看MSDN)来区别stdafx.h的位

置,但是其智能感知工具IntelliSense却不能。所以你的代码即使能够通过编译器,而IntelliSense却不能感知到,因为它没有利用相同的规则。如果你指定了这个文件的

具体位置,例如"..//stdafx.h",此时IntelliSene能够正确的感知到,而编译器却找不到,并给出一个错误。因为编译器只认识这样的预定义头文件字符:#include 

"stdafx.h"。

为什么会有如此糟糕的结果呢?微软宣称这是经过精心考虑后设计的。(http://connect.microsoft.com/VisualStudio/feedback/details/533605/stdafx-h-cant-be-

parsed-with-intellisense-squiggles-mechanism[^]).

有很多方法绕过编译器的这个“特色”。一般地,你可以用如下形式来分别满足编译器和IntelliSense,

#include "stdafx.h"      //Pre-compiled header for compiler
#include "..//stdafx.h"  //Exact location of pre-compiled header for intellisense

或者,你也可以通过Project->Properties->Configuration Propertes->C/C++->General->Additional Include Directories,把stdafx.h添加于其中(或者添

加"$(ProjectDir)"),作为默认目录。一般的,如果工程非常大的话,建议你采用这种方法。

posted @ 2013-08-25 22:10  seamanj  阅读(279)  评论(0编辑  收藏  举报