如何在.IDL文件中声明枚举?

时间:2018-11-02 17:25:49

标签: uwp win-universal-app midl c++-winrt

我有一个运行时类,我想向其中添加一个枚举。我尝试了MSDN文档在此处建议的以下语法:https://docs.microsoft.com/en-ca/uwp/midl-3/intro

left

但是我从MIDL中收到以下错误:

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

正确的语法是什么?我正在使用Windows SDK的error MIDL2025: [msg]syntax error [context]: expecting an identifier near ";" 版。

1 个答案:

答案 0 :(得分:4)

您不能在类型中嵌套枚举。您从documentation链接到:

  

MIDL 3.0声明中的关键组织概念是名称空间,类型和成员。 MIDL 3.0源文件(.idl文件)包含至少一个名称空间,其中包含类型和/或从属名称空间。 每种类型包含零个或多个成员。

     
      
  • 类,接口,结构和枚举是类型。
  •   
  • 字段,方法,属性和事件是成员的示例。
  •   

由于枚举是类型,因此它们必须出现在名称空间中。您需要将IDL更改为此:

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

    runtimeclass my_rt_class
    {        
    }
}