ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 июля
32417 Топик полностью
ReAl (06.06.2005 21:12, просмотров: 1) ответил sda на Ребята,подскажите по С.
Ну тогда так: Добавить массив целых по числу функций. Каждый бит - это какое-то условие (если 16 условий хватит).
enum func_flag {
 func_cond1 = 0x01, func_cond2 = 0x02,
 func_cond3 = 0x04 // и т.д., имена, естественно, осмысленные
};
unsigned flags[] = {
  func_cond1 | func_cond3 // первая функция блокируется в этих случаях
  func_cond_4, // и т.д.
  func_cond_2 | func_cond_5,
  ...
};

unsigned current_flags = 0; // сначала всё разрешено

void call_func(unsigned char i)
{
  if( flags[i] & current_flags)
    return; // заблокировано
  (arr[i])();
}