1

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

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

我正在尝试使用 WDK 7.1 在 Windows XP Free Build Environment 中使用以下命令行对其进行编译:

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是原因。有人知道如何正确关闭它吗?(如果我只是注释掉这些行,我会收到关于一堆其他宏的更多错误。)

4

3 回答 3

3

通过修改标题和guess'n'checking自己找到了答案:

我需要_STL70_定义。

于 2011-05-13T08:15:16.793 回答
0

cl.exe你捡哪个?如果您的路径碰巧在 WDK 之前有一个较旧的 (VC6) 编译器,那么您可能会遇到这些错误。VC6 无法编译 VC7 附带的 STL

于 2011-05-13T07:12:57.290 回答
0

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

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

/D_SCL_SECURE_NO_DEPRECATE

但是鉴于您看到的错误消息,听起来您正在使用比头文件支持更早的编译器来编译头文件(所以这可能不会让您走得太远)。

于 2011-05-13T08:04:14.170 回答