4

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

enum someLongNameThatTheCLibraryUses
{
    A,
    B,
}

目前,我必须这样引用它:

someLongNameThatTheCLibraryUses.A;

但我宁愿:

A;

我可以这样做:

alias someLongNameThatTheCLibraryUses a;
a.A;

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

有没有办法做到这一点?

4

1 回答 1

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
}
于 2009-08-19T19:33:50.060 回答