Любой способ дать имена каждому из набора последовательных целых чисел? - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть int, называемый setupStage.Это просто значение, которое я увеличиваю по завершении каждого этапа, поэтому я могу сказать, if (setupStage == 2), и я знаю, что я на третьем этапе (по умолчанию 0).

Есть ли способЯ могу ссылаться на эти цифры лучше?Например:

if (setupStage == stageEnterName)

Вместо того, чтобы ссылаться на его фактическое необработанное значение int.

Это может быть неправильное представление, но делает то, что я пытаюсьдостичь, иметь какое-либо отношение к определению макросов?

Ответы [ 2 ]

9 голосов
/ 09 ноября 2011

Да!

Попробуйте:

typedef enum {
    MyType0,
    MyType1,
    MyType2,
    MyType3
} MyType;

Это то же самое, что и:

typedef enum {
    MyType0 = 0,
    MyType1,
    MyType2,
    MyType3
} MyType;

Значения по умолчанию равны 0 в первом слоте изатем увеличьте на 1 автоматически.Обратите внимание, что имена токенов (MyTypeX) являются произвольными заданными вами строковыми значениями.

В этом случае они изменяются от 0 до 3. Затем вы можете сказать что-то вроде этого:

if (setupStage == MyType3)

идентичный

if (setupStage == 3)
2 голосов
/ 09 ноября 2011

Для меня это звучит так, как будто вы хотите макроподобное решение, и, к счастью, оно существует.

STAGE_ONE = 0
STAGE_TWO = 1
STAGE_THREE = 2
# ...

if setupStage == STAGE_THREE:

будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...