2012-03-30 9 views
1

Ich habe Interesse an so etwas wie ein enum tun, aber wo die Zuwächse sind nicht immer einer, Art wie folgt aus:Typedef Enum-like variabel, aber mit beliebigen Schritten

typedef enum{this=0,that=3,something=5}example; 

Ich frage mich, was ist der Der beste Weg, so etwas zu tun, wie ich oben erwähnt habe, ist entweder nicht möglich oder nicht ratsam. Grundsätzlich möchte ich kConstantNames verwenden, die sich auf ganzzahlige Werte beziehen ... sollte ich stattdessen einfach eine #define Anweisung verwenden?

Antwort

2

Das ist zulässig, ganz normal und definitiv besser als #define.

Minor Nitpick: #define ist keine Aussage. Es ist ein Präprozessor-Konstrukt, das erweitert wird, bevor der eigentliche Compiler es sogar sieht.

+0

Ich dachte "enum" bezog sich auf eine aufgezählte Gruppe von Werten mit Schritten von 1 zwischen? – johnbakers

+3

Das ist die Standardeinstellung. Das Zuweisen von bestimmten Werten ist, wie Sie es getan haben, legal und wird üblicherweise verwendet, um Bitmasken (unter anderem) zu definieren: 'enum {foo = 1, bar = 2, baz = 4, woz = 8, ...} '. –

+0

müssen sie in der Reihenfolge sein? oder könntest du baz = 4 vor foo = 1 setzen? – johnbakers