3

私は2つの列挙型を持っています:

typedef enum {a=0, a1=3, a2=5} NX;
typedef enum {c=-1, c1=4, c2=7} NY;

列挙型/インスタンスの名前を指定すると、最初の要素の値が返される式を記述したいと思います。考えられる解決策は、次のような固定名要素を常に追加することです。

typedef enum {a=0, first=a, a1, a2, last=a2}

しかし、もっとエレガントな方法があるかもしれません。

実行時に列挙型の要素の数を取得する方法はありますか?

4

2 に答える 2

0

いいえ、sizeof()列挙型では機能しません。実行時に要素数を取得することはできません。
enum の最後の要素の値をチェックして、特定の enum 内の要素の量を決定する一般的な方法が 1 つあります。

enum Type {A = 0, B, C, LAST};
printf("'Type' enum has %d number of elements", LAST);
于 2012-08-16T10:04:12.383 に答える
0

列挙型の数字が連続している場合(最初の2つの例では連続している場合)、いつでも使用できます

typedef enum {first = -18, b, c, d, last } BlahBlah;
(...)
int nptElements = last - first + 1;

要素数を取得します。もちろん、これには最初と最後の知識が必要です...

于 2012-08-16T10:06:56.990 に答える