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

时间:2009-08-19 17:47:06

标签: enums d

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

enum someLongNameThatTheCLibraryUses
{
    A,
    B,
}

目前,我必须这样说:

someLongNameThatTheCLibraryUses.A;

但我宁愿:

A;

我可以这样做:

alias someLongNameThatTheCLibraryUses a;
a.A;

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

有办法做到这一点吗?

1 个答案:

答案 0 :(得分: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
}