无法在MIDL 3中使用[noexcept]

时间:2019-06-28 09:28:42

标签: c++-winrt midl

在今年的Build Talk C++/WinRT 2.0: Faster and smarter in the open中,Kenny Kerr演示了use of the [noexcept] attribute in IDL,通过在ABI中隐藏异常处理为编译器提供了更好的优化机会。

但是,我自己尝试一下,最终遇到MIDL编译器错误。以下精简的IDL文件

namespace NS
{
    interface IMyInterface
    {
        [noexcept] String DoStuff();
    };
}

产生以下诊断输出:

error MIDL2025: [msg]syntax error [context]: expecting . near "]"
error MIDL2009: [msg]undefined symbol [context]: noexcept.String
error MIDL2025: [msg]syntax error [context]: expecting ] or , near "DoStuff"
error MIDL2025: [msg]syntax error [context]: expecting . near "("
error MIDL2026: [msg]cannot recover from earlier syntax errors; aborting compilation

我在这里做错什么了吗?还是[noexcept]属性在Visual Studio(16.1.4)的GA版本或Windows SDK(10.0.18362.0)中尚不可用?

1 个答案:

答案 0 :(得分:2)

您将需要更新版本的MIDLRT。 Windows SDK的内部版本当前提供此功能,并将随Windows的下一个主要更新一起提供。