0

次のような列挙がある場合:

typedef enum {
    ValueOne = /* some arbitrary number, NOT necessarily 0 */,
    ValueTwo = /* another number, NOT necessarily consecutive */
} MyEnumeration;

配列を取得して、これを行わずに特定のインデックスの値にアクセスする方法があるかどうか疑問に思っていました:

int array[2] = {ValueOne, ValueTwo};
MyEnumeration value = array[provided_index];

私の問題は、私のプロジェクトでは、列挙型に 10 ~ 15 個の値があり、それらのそれぞれから配列を作成したくないということです。

[編集]:とがまったく結び付いていないため、これが不可能であることは理解できますが、何か不足している場合に備えて質問しても問題ないと思いました。typedefenum

4

2 に答える 2

5

いいえ。

列挙型と配列の両方のコードを記述するか、なんらかの手法を使用してコードを自動生成し、メンテナンスの負担を軽減する必要があります。

The New C: X Macros という記事に興味があるかもしれません。

于 2012-07-04T23:18:34.663 に答える
-2

私は列挙を完全に廃止します。配列と列挙型の両方に格納する必要がある場合は、まったく意味がありません。列挙型はマクロであり、実際には情報を保存するのではなく、コンパイル時に代入されると思われる数値の名前を作成するだけです。特定の名前に使用する番号を頭の中で覚えておくか、#define を使用する方がよい場合があります。

于 2012-07-04T23:56:45.583 に答える