Как объявить enum в файле .IDL? - PullRequest
       104

Как объявить enum в файле .IDL?

0 голосов
/ 02 ноября 2018

У меня есть класс времени выполнения, в который я хотел бы добавить перечисление. Я попробовал следующий синтаксис, предложенный в документации MSDN здесь: https://docs.microsoft.com/en-ca/uwp/midl-3/intro

namespace my_project
{
    runtimeclass my_rt_class
    {        
        enum my_enum
        {
            first = 0,
            second = 1
        };
    }
}

Однако я получаю следующую ошибку из MIDL:

error MIDL2025: [msg]syntax error [context]: expecting an identifier near ";"

Какой правильный синтаксис для этого? Я использую версию 10.0.17763.0 Windows SDK.

1 Ответ

0 голосов
/ 03 ноября 2018

Нельзя вкладывать перечисления в типы. Из документации вы связались с:

Ключевыми организационными концепциями в объявлении MIDL 3.0 являются пространства имен, типы и члены. Исходный файл MIDL 3.0 (файл .idl) содержит хотя бы одно пространство имен, внутри которого находятся типы и / или подчиненные пространства имен. Каждый тип содержит ноль или более членов.

  • Классы, интерфейсы, структуры и перечисления являются типами.
  • Поля, методы, свойства и события являются примерами элементов.

Поскольку перечисления являются типами, они должны появляться в пространстве имен. Вам нужно будет изменить свой IDL на это:

namespace my_project
{
    enum my_enum
    {
        first = 0,
        second = 1
    };

    runtimeclass my_rt_class
    {        
    }
}
...