2010年7月30日 星期五

偷吃步

繼剛剛寫的,do while(0)的好處後,當然要找個實例來練習一下


平常最常用的就是數值飽和 和 deadband


以往程式都需要一直複製貼上,呵,我就是這樣


這樣程式會愈來愈大


利用define 的好處,改寫一下程式


以下是練習的程式


#define sa(value,sta) \
 do { \
  if (value>sta)value=sta;\
  else if(value<-sta)value=-sta;\
 }while(0)


//定義一個飽和的巨集


#define deadband(value,range) \
 do{ \
  if (value>range)value-=range; \
  else if (value<-range)value+=range; \
  else value=0; \
 }while(0)


//定義一個deadband 的巨集


int main(void){


 int c=-50,d;


 deadband(c,3); 
 sa(c,10);
 


 while(1);
}


 


喔?這樣以後要使用deadband 或是 飽和的程式時,就可以結省許多空間了,真的是太好了


那就可以寫自己專屬的lib了,好像很不賴的感覺。


沒有留言:

張貼留言