错误的出现是这样的:
我在VS2008的一个工程中添加了WinDDK中头文件difxapi.h的引用,并在工程Properties->C/C++->Additional Include Directories中添加了difxapi.h所在的目录C:\WinDDK\7600.16385.1\inc\api\。
再编译时,编译器提示错误:
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\new.h(60) : error C2065: '_In_opt_' : undeclared identifier
错误的原因分析:
1. 可以看出,问题出现在new.h文件,原因是_In_opt_没有被声明。那么我们来找一下是否真的如此。
在sal.h文件(VA指向了C:\Program Files\Microsoft Visual Studio 9.0\VC\include\sal.h)中,找到了_In_opt_的定义:
#define _In_opt_ _Pre_opt_valid_ _Deref_pre_readonly_
而sal.h文件在crtdefs.h文件中被include,crtdefs.h文件又被new.h文件include,这样看来,应该是正常声明过了。
2. 好吧,还有一个可能是sal.h文件不止有一个,编译器引用了错误的sal.h文件。
crtdefs.h文件引用sal.h的声明如下:
#include <s