PDA

Просмотр полной версии : [Вопрос] Объединение значений в enum



Elrmrnt-Kritik
03.01.2018, 18:09
Добрый вечер. Подскажите пожалуйста в моем маленьком вопросике. Допустим, есть enum, в котором прописаны ID фракций:


enum
{
F_PPS,
F_DPS,
/*....*/
}

ППС и ДПС, грубо говоря, есть полиция (F_POLICE). Можно ли как-то сделать так, чтобы в проверках я мог писать не


if(frac == F_PPS || frac == F_DPS)

А примерно так:

if(frac == F_POICE)
Без использования макросов.

Пробовал такой вариант, однако, предупреждения при компиляции возникают (что символ уже объявлен):


enum F_POLICE
{
F_PPS,
F_DPS
}

DeimoS
03.01.2018, 19:55
У тебя есть 2 значения: 0 и 1. Как думаешь, можно ли проверить, равна ли переменная frac одному из значений, просто сделав "=="?)

#define IsFractionPD(%0) (%0 == F_PPS || %0 == F_DPS)
Коротко и ясно. К чему изобретать велосипед?

Elrmrnt-Kritik
03.01.2018, 22:08
В приложенном мной варианте еще да, и с макросом будет неплохо, а когда будет таких не две фракции, а десять, уж в макрос все лепить тоже не очень хочется. Ну, ладно, ответ в принципе получил, спасибо большое :smile:

StevenH
03.01.2018, 22:14
В приложенном мной варианте еще да, и с макросом будет неплохо, а когда будет таких не две фракции, а десять, уж в макрос все лепить тоже не очень хочется. Ну, ладно, ответ в принципе получил, спасибо большое :smile:

Почему в макрос 10 фракций не хочется лепить? Взял перенес строку и все. Это куда лучше чем делать сток или прочее xD

Elrmrnt-Kritik
03.01.2018, 22:23
Почему в макрос 10 фракций не хочется лепить? Взял перенес строку и все. Это куда лучше чем делать сток или прочее xD
Да понятно, что лучше функции, но... Просматривать неудобно будет длинную строку для поиска какой-нибудь фракции.

DeimoS
03.01.2018, 22:56
Да понятно, что лучше функции, но... Просматривать неудобно будет длинную строку для поиска какой-нибудь фракции.

Ну так создай функцию и в ней сделай условие с switch + case.