在今年的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)中尚不可用?
答案 0 :(得分:2)
您将需要更新版本的MIDLRT。 Windows SDK的内部版本当前提供此功能,并将随Windows的下一个主要更新一起提供。