c++ - "warning C4987: nonstandard extension used: ' throw (... )'"是什么意思?

标签 c++ visual-c++ atl visual-studio-2010

我正在尝试编译一个 VC++ 项目,它提示这个错误

Microsoft Visual Studio 10.0\VC\atlmfc\include\atlalloc.h(517): warning C4987: nonstandard extension used: 'throw (...)'

它指向的线是

_Ret_opt_bytecap_x_(nElements * sizeof(T)) T* Allocate(_In_ size_t nElements) throw( ... )
    {
        return( AllocateBytes( ::ATL::AtlMultiplyThrow(nElements,sizeof( T )) ) );
    }

最佳答案

这意味着 throw(...) 异常规范是一个非标准的扩展(如果有的话,也是一个非答案...),也就是说,C++ 标准确实没有为这段代码定义意义。在 Visual Studio 中,这意味着该函数可能会引发任何异常。

如果它是您自己的代码,您可以通过简单地删除异常规范来修复警告(好吧,无论如何,对于 C++ 异常;我不知道这将如何影响 Microsoft 的结构化异常处理)。

关于c++ - "warning C4987: nonstandard extension used: ' throw (... )'"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513986/

相关文章:

c++ - LookupAccountName 在 Vista 上失败并显示 ERROR_NONE_MAPPED

c++ - 切换到 VS12 v110_xp 时缺少 Winusb.h

c++ - 将点的二维数组转换为一维数组

带计时器的 C++ 对话框

c++ - 为什么 MSVC 静态局部变量的线程安全初始化使用 TLS

c++ - "AnySTLContainer<int>"c++ 的模板

c++ - 当包含在头文件中时,结构将不起作用

c++ - 如何从 CEdit 控件中获取文本

c++ - 如何将 ANSI 字节转换为 Unicode 字符串?

c++ - Ole 拖放故障排除