Маски для дефайнов
От: dr_begemot Россия  
Дата: 24.06.11 10:54
Оценка:
Есть 4 дефайна, ПОКА с такими значениями
#define DES_EEE3    0
#define DES_EDE3    1
#define DES_EEE2    2
#define DES_EDE2    3

надо как-то сделать так, чтобы за 2 операции сравнения можно было разбить на действия (сейчас сравнений 4):
if(param == DES_EEE2 || param == DES_EDE2){
// ...
}else{
// ...
}

if(param == DES_EEE2 || param == DES_EEE3){
// ...
}else{
// ...
}

Т.е. если пришедший параметр или DES_EEE2 или DES_EDE2 то определенные действия, если DES_EEE3 или DES_EDE3 то другие.

Дальше, если пришедший параметр или DES_EEE2 или DES_EEE3 то одни действия, если DES_EDE2 или DES_EDE3 то другие...

Как-то по-моему можно маски сделать, но я в этом не силен и не знаю/не помню как

Значения дефайнов естественно можно менять.

Спасибо)
Re: Маски для дефайнов
От: igna Россия  
Дата: 24.06.11 12:18
Оценка:
Здравствуйте, dr_begemot, Вы писали:

_>Спасибо)


#define DES_EDE2_OR_EDE3 1
#define DES_EEE2_OR_EDE2 2

#define DES_EEE3    0
#define DES_EDE3    DES_EDE2_OR_EDE3
#define DES_EEE2    DES_EEE2_OR_EDE2
#define DES_EDE2    (DES_EEE2_OR_EDE2 | DES_EDE2_OR_EDE3)

if(param & DES_EEE2_OR_EDE2){
  // ...
}else{
  // ...
}

if(!(param & DES_EEE2_OR_EEE3)){
  // ...
}else{
  // ...
}
Re: Маски для дефайнов
От: dilmah США  
Дата: 24.06.11 13:23
Оценка: 1 (1) +2
_>надо как-то сделать так, чтобы за 2 операции сравнения можно было разбить на действия (сейчас сравнений 4):

напиши свитч, любой нормальный компилятор его оптимизирует
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.