我正在建立一个到C库的D桥接器,这就是使用typedef'd枚举的C代码,它引用的类似于常量,但可以为函数参数等命名。示例:
enum someLongNameThatTheCLibraryUses
{
A,
B,
}
目前,我必须这样说:
someLongNameThatTheCLibraryUses.A;
但我宁愿:
A;
我可以这样做:
alias someLongNameThatTheCLibraryUses a;
a.A;
但是我不想在库模块中这样做,所以我必须在使用它的地方这样做,这会很烦人。
有办法做到这一点吗?
答案 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
}