Visual C++ 2005 中的编译器功能
更新:2007 年 11 月
本主题列出 Visual C++ 2005 编译器中的新增功能。
说明: |
---|
Visual C++ 编译器只能在下列操作系统上运行:Windows 2000 和 Windows XP Home Edition、Windows XP Professional、Windows Server 2003。 |
备注
Visual C++ 2005 编译器包含以下新增功能:
此版本的编译器中有重大更改。 有关更多信息,请参见 Visual C++ 2005 编译器中的重大更改。
添加了 /analyze(企业代码分析) 编译器选项。
添加了 /bigobj 编译器选项。
添加了 /clr:pure、/clr:safe 和 /clr:oldSyntax。有关更多信息,请参见 /clr(公共语言运行库编译)。
已否决的编译器选项:在此版本中,很多编译器选项已被否决;有关更多信息,请参见 Visual C++ 2005 中不推荐使用的编译器选项。
减少了 /clr 代码中的双转换;有关更多信息,请参见 双重 Thunk (C++)。
/EH(异常处理模型) 或 /EHs 不能再用于捕捉非引发性异常;应使用 /EHa。
添加了 /errorReport(报告内部编译器错误) 编译器选项。
添加了 /favor(针对 x64 进行优化) 编译器选项。
添加了 /FA、/Fa(列表文件) 编译器选项。
添加了 /FC(所诊断源代码文件的完整路径) 编译器选项。
添加了 /fp(指定浮点行为) 编译器选项。
添加了 /G(处理器优化)选项 编译器选项。
添加了 /G(处理器优化)选项 编译器选项。
/G3、/G4、/G5、/G6、/G7 和 /GB 编译器选项已被移除。该编译器现在使用“混合模型”,该模型会尝试为所有体系结构创建最佳输出文件。
/Gf 已被移除。应改用 /GF(消除重复的字符串)。
/GL(全程序优化) 现在与 /CLRHEADER 兼容。有关更多信息,请参见 /LTCG(链接时代码生成)。
现在,/GR 在默认情况下处于打开状态。 有关更多信息,请参见 /GR(启用运行时类型信息)。
/GS(缓冲区安全检查) 现在可对容易受到攻击的指针参数提供安全保护。现在,/GS 在默认情况下处于打开状态。/GS 现在也可用于通过 /clr(公共语言运行库编译) 编译为 MSIL 的函数。
添加了 /homeparams(将寄存器参数复制到堆栈) 编译器选项。
添加了 /hotpatch(创建可热修补的映像) 编译器选项。
内联函数试探法已更新;有关更多信息,请参见 inline, __inline, __forceinline 和 inline_depth
新添了很多内部函数,而且很多以前未编入文档的内部函数现在都已编入文档。有关更多信息,请参见 Alphabetical Listing of Intrinsic Functions。
默认情况下,任何对 new 的调用失败都将引发异常。有关更多信息,请参见 The new and delete Operators。
/ML 和 /MLd 编译器选项已被移除。Visual C++ 不再支持单线程静态链接的 CRT 库支持。有关更多信息,请参见 C Run-Time Libraries。
编译器已实现命名的返回值优化,当您用 /O1、/O2(最小化大小、最大化速度)、/Og(全局优化) 和 /Ox(完全优化) 进行编译时会启用此优化。
/Oa 编译器选项已被移除,它将被忽略但不进行提示;请使用 noalias 或 restrict__declspec 修饰符来指定编译器命名别名的方式。
/Op 编译器选项已被移除。而应使用 /fp(指定浮点行为)。
Visual C++ 现在支持 OpenMP。有关更多信息,请参见 OpenMP in Visual C++。
添加了 /openmp(启用 OpenMP 2.0 支持) 编译器选项。
/Ow 编译器选项已被移除,它将被忽略但不进行提示。请使用 noalias 或 restrict__declspec 修饰符来指定编译器命名别名的方式。
/QI0f 已被移除。
/QIfdiv 已被移除。
添加了 /QIPF_B(B CPU 单步执行的错误表) 编译器选项。
添加了 /QIPF_C(C CPU 单步执行的错误表) 编译器选项。
添加了 /QIPF_fr32(不使用高 96 浮点寄存器) 编译器选项。
添加了 /QIPF_noPIC(生成依赖于位置的代码) 编译器选项。
添加了 /QIPF_restrict_plabels(假定运行时不创建任何函数) 编译器选项。
/vd(禁用构造置换) 现在允许您对正在构造(使用 /vd2)的对象使用 dynamic_cast Operator
/YX 编译器选项已被移除。请改用 /Yc(创建预编译头文件) 或 /Yu(使用预编译头文件)。如果从生成配置中移除 /YX,且不提供替换项,则可能使生成的速度更快。
现在,/Zc:forScope 在默认情况下处于打开状态。 有关更多信息,请参见 /Zc:forScope(强制 for 循环范围中的一致性)。
现在,/Zc:wchar_t 在默认情况下处于打开状态。 有关更多信息,请参见 /Zc:wchar_t(wchar_t 是本机类型)。
/Zd 编译器选项已被移除。不再支持仅限行号调试信息。请改用 /Zi(有关更多信息,请参见 /Z7、/Zi、/ZI(调试信息格式))。
/Zg 现在仅对 C 源代码文件有效,而对 C++ 源代码文件无效。 有关更多信息,请参见 /Zg(生成函数原型)。
添加了 /Zx(调试经过优化的 Itanium 代码) 编译器选项。