Невозможно использовать [noexcept] в MIDL 3 - PullRequest
0 голосов
/ 28 июня 2019

В этом году на Build Talk C ++ / WinRT 2.0: быстрее и умнее в открытом , Кенни Керр демонстрирует использование атрибута [noexcept] в 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]еще не доступно в версиях GA Visual Studio (16.1.4) или Windows SDK (10.0.18362.0)?

1 Ответ

2 голосов
/ 01 июля 2019

Вам понадобится более новая версия MIDLRT.Эта функция в настоящее время доступна в инсайдерских сборках Windows SDK и появится в следующем крупном обновлении Windows.

...