Enums 您是否可以引用命名枚举,就好像它在D中是匿名的一样?

Enums 您是否可以引用命名枚举,就好像它在D中是匿名的一样?,enums,d,Enums,D,我正在做一个到C库的D桥,这个C代码使用了typedef的枚举,它引用了一个常量,但可以为函数参数等命名。例如: enum someLongNameThatTheCLibraryUses { A, B, } 目前,我必须这样提及: someLongNameThatTheCLibraryUses.A; 但我宁愿: A; 我可以这样做: alias someLongNameThatTheCLibraryUses a; a.A; 但是我不想在库模块中这样做,所以我必须在使用它的

我正在做一个到C库的D桥,这个C代码使用了typedef的枚举,它引用了一个常量,但可以为函数参数等命名。例如:

enum someLongNameThatTheCLibraryUses
{
    A,
    B,
}
目前,我必须这样提及:

someLongNameThatTheCLibraryUses.A;
但我宁愿:

A;
我可以这样做:

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


有办法做到这一点吗?

如果希望匿名枚举具有类型安全性,可以使用
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
}

40分钟;我喜欢这个地方。