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