非常神秘/随机C ++ WDK STL 7错误:iosfwd(202):错误C2144:语法错误

时间:2011-05-13 06:20:50

标签: c++ winapi windows-7 stl wdk

我有以下名为Temp.cpp的简单文件:

#include <string>
int main() { return 0; }

我正在尝试使用WDK 7.1在Windows XP免费构建环境中使用以下命令行编译它:

cl.exe /Iinc\api\crt\stl70 /Iinc\crt C:\Temp.cpp

我得到了非常随机的错误,如:

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.207 for 80x86

C:\WinDDK\7600.16385.1\inc\api\crt\stl70\iosfwd(202) :
    error C2144: syntax error : 'int' should be preceded by ';'

如果我使用stl60代替stl70,则错误会消失,但这并不能解决问题。

问题的原因是什么?


更新:我尝试再次卸载并安装WDK,但没有任何改变。 :(


更新2:好的,显然错误是在头文件本身尖叫:_SCL_INSECURE_DEPRECATE是原因。有人知道如何正确关闭 吗? (如果我只是注释掉这些行,我会在一堆其他宏上得到更多的错误。)

3 个答案:

答案 0 :(得分:3)

通过修改标题和猜测来找到答案:

我需要定义_STL70_

答案 1 :(得分:0)

你选择哪cl.exe?如果你的路径碰巧在WDK之前有一个较旧的(VC6)编译器,你会发现这些错误。 VC6无法编译VC7附带的STL

答案 2 :(得分:0)

  

显然错误是在头文件本身尖叫:_SCL_INSECURE_DEPRECATE是原因。有人知道如何正确关闭它吗?

如果您遇到_SCL_INSECURE_DEPRECATE问题,请尝试设置:

/D_SCL_SECURE_NO_DEPRECATE

但是鉴于错误消息,你看到它听起来像是编译头,其编译器比头支持的更旧(所以这可能不会让你走得太远)。