[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Если у тебя после проверки выражения
в условиях используются выражения от которых
в дальнейщем ничего не зависит, то код сравнения
просто выкидыватся опртимизатором.
Т.е. на мой взгляд все ок.
Пример 1: -
volatile byte;
void funk(void){
unsigned char Var1,Var2;
Var1=1;
Var2=2;
if(Var1!=Var2){
byte=1;
}
else{
byte=2;
}
}
получается....
69 Var1=1;
70 Var2=2;
71 if(Var1!=Var2){
\ 00000030 E001 LDI R16,1
\ 00000032 9300.... STS `byte`,R16
72 byte=1;
73 }
74 else{
75 byte=2;
76 }
77 if(byte==2){
\ 00000036 9100.... LDS R16,`byte`
....
если написано так
void funk(void){
unsigned char Var1,Var2;
Var1=1;
Var2=2;
if(Var1!=Var2){
byte=1;
}
else{
byte=2;
}
}
получается:
68
69 Var1=1;
70 Var2=2;
71 if(Var1!=Var2){
72 byte=1;
73 }
74 else{
75 byte=2;
76 }
т.е. не одной строчки кода на выходе...
E-mail: info@telesys.ru