症状
症状 1
编译在特定偏移位置具有枚举声明的 Microsoft Visual C++ 项目时,可能会收到 C2371、 C2556 或 C2511 错误。
原因 1
此问题是由于编译器错误地分析发生文件缓冲区末尾的枚举声明代码 [文件偏移量 (4096 * n)-1]。
症状
编译一个具有虚函数调用返回对象,则返回的值绑定到引用 Visual C++ 项目。还有/clr选项处于启用状态。在此情况下,您可能会收到在运行时访问冲突异常。
原因 2
因为一个临时值,绑定到const引用的隐式生命周期扩展不起作用如果符合以下条件,则会出现此问题︰
-
作为/clr编译项目。
-
临时的价值是通过函数指针的函数调用虚函数调用的返回的值。
解决方案
修补程序信息
可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。仅对出现这一特定问题的系统应用此修补程序。
如果此修复程序可供下载,则在此知识库文章顶部"提供修补程序下载"部分。如果未显示此部分,将申请提交到 Microsoft 客户服务和支持,以获取此修复程序。
注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰
http://support.microsoft.com/contactus/?ws=support注意:"修补程序下载可用"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。
系统必备组件
若要应用此修补程序,您必须具有 Microsoft Visual Studio 2012 更新 4 安装。
重启要求
您可能需要重新启动计算机,如果受影响的文件未被使用在安装时安装此修复程序后。我们建议您在安装此修复程序之前关闭所有 Visual Studio 2012 相关的组件。
状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。