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 に答える