Добрый день
Написал макрос, но оператор CASE не хочет работать. Я его упростил, но не помогло. В результате работы переменная I1 должна принять значение 5, но она почему-то 0.
int MacroEntry()
{
static unsigned short I1 = 0;
unsigned short I2 = 0;
unsigned short K;
unsigned short N1 = 1;
unsigned short _P1[3] = {1,2,76};
float _P2[3] = {3.1, 10.6, 70.4};
unsigned int _P10[3][8] = {
{82, 101, 99, 105, 112, 101, 32, 49},
{82, 101, 99, 105, 112, 101, 32, 50},
{82, 101, 99, 105, 112, 101, 32, 51}
};
bool Up_c;
bool Down_c;
J = J + 1;
N = N1;
_I1 = I1;
Up_c = Up;
Down_c = Down;
switch (I1){
case 0:
//if (Up_c == true) {I1 = 10;}
I1 = 5;
break;
case 5:
;
break;
case 10:
if (N1 >= 3) {N1 = 1;} else {N1 = N1 + 1;}
I1 = 20;
case 20:
if (Up_c == false) {I1 = 0;}
}
for (K = 0; K < 8; K++) {P10[K] = _P10[N1-1][K];}
for (K = 0; K < 2; K++) {P1[K] = _P1[K];}
for (K = 0; K < 2; K++) {P2[K] = _P2[K];}
return 0;
}
Убрал из макроса все лишнее и оператор CASE начал работать верно.
int MacroEntry()
{
static unsigned short I1 = 0;
switch (I1){
case 0:
I1 = 5;
break;
case 5:
;
break;
case 10:
if (N1 >= 3) {N1 = 1;} else {N1 = N1 + 1;}
I1 = 20;
case 20:
if (Up_c == false) {I1 = 0;}
}
return 0;
}
В чем может быть причина ?