不能在 MIDL 3 中使用 [noexcept]
Cannot use [noexcept] in MIDL 3
在今年的 Build Talk C++/WinRT 2.0: Faster and smarter in the open, Kenny Kerr demonstrates the 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) 或 Windows SDK (10.0.4) 的 GA 版本中尚不可用。 18362.0)?
您需要更新版本的 MIDLRT。此功能目前在 Windows SDK 的内部版本中可用,并将随 Windows 的下一个主要更新一起提供。
在今年的 Build Talk C++/WinRT 2.0: Faster and smarter in the open, Kenny Kerr demonstrates the 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) 或 Windows SDK (10.0.4) 的 GA 版本中尚不可用。 18362.0)?
您需要更新版本的 MIDLRT。此功能目前在 Windows SDK 的内部版本中可用,并将随 Windows 的下一个主要更新一起提供。