你可以引用一个命名的枚举,好像它在D中是匿名的吗?

Ber*_*ard 4 enums d

我正在做一个到C库的D桥接器,这就是使用typedef'd枚举的C代码,它引用像常量,但可以为函数参数等命名.例:

enum someLongNameThatTheCLibraryUses
{
    A,
    B,
}
Run Code Online (Sandbox Code Playgroud)

目前,我必须这样说:

someLongNameThatTheCLibraryUses.A;
Run Code Online (Sandbox Code Playgroud)

但我宁愿:

A;
Run Code Online (Sandbox Code Playgroud)

我能做到这一点:

alias someLongNameThatTheCLibraryUses a;
a.A;
Run Code Online (Sandbox Code Playgroud)

但我不想在库模块中这样做,所以我必须在使用它的地方这样做,这会很烦人.

有没有办法做到这一点?

Vla*_*eev 5

如果您希望使用匿名枚举键入安全性,则可以使用创建新的不同类型typedef,并将其用作匿名枚举的基本类型.例:

typedef int A;
enum : A
{
    a1,
    a2,
    a3
}

typedef int X;
enum : X
{
    x1,
    x2,
    x3
}

void main()
{
    A a;
    X x;
    x = a;  // Error: cannot implicitly convert expression (a) of type A to X
}
Run Code Online (Sandbox Code Playgroud)

  • 40分钟; 我喜欢这个地方. (4认同)
  • 而且,通过扩展,你.:p (2认同)