Вот это:
Надо в фигурные скобки ставить:Код:if ( sel < _ICs ) // for safety sym[0] = 12; sym[1] = chips[sel].sym[0]; sym[2] = chips[sel].sym[1]; sym[3] = chips[sel].sym[2]; res = 0; chips[sel].test();
Иначе от if'а толку 0.Код:if ( sel < _ICs ) // for safety { sym[0] = 12; sym[1] = chips[sel].sym[0]; sym[2] = chips[sel].sym[1]; sym[3] = chips[sel].sym[2]; res = 0; chips[sel].test(); }
Если в sel всегда находится правильное число (от 0 до _ICs - 1), то эти if'ы можно вообще убрать.
И если в sym[3] всегда одно и тоже записывается (а сейчас там у всех мелкосхем 13), то можно еще чуть-чуть ужать:
Ну и дальше тогда в коде поправить:Код:const struct { void (*test)( void ); char sym[3]; } chips[] = { { test_7400, { 0, 0, 13 } }, { test_7402, { 2, 0, 13 } }, { test_7404, { 4, 0, 13 } }, и т.д.
И т.д. и т.п..Код:if ( sel < _ICs ) // for safety { sym[0] = chips[sel].sym[0]; sym[1] = chips[sel].sym[1]; sym[2] = chips[sel].sym[2]; sym[3] = 13; }





Ответить с цитированием