2010年7月30日 星期五

do while(0)

在看範例程式的時候,又看到奇怪的用法


do{


xxx( );


XXX( );


}while(0);


心想,雖然我c語言沒有很強,但是while(0) 不成立,只做一次,幹嘛不寫成


xxx( );


XXX( );


多浪費do while(0) 的動作



網路上的文章寫得很清楚do while(0)


搞懂了為什麼之後


那麼,這樣寫code size會不會變大?


int c;
void a1(void){
 c++;
}
void b1(void){
 c++;
}


#define test() \
do { \
 a1( ); \
 b1( ); \
}while(0)


int main(void){


 test();
 
 //a1( ); 
 //b1( ); 


 while(1);
}


經過compiler的結果,test( ) ; 和 單獨使用 a1( ); b1( );,這樣的code size 並不會變大。


又偷學到了一招好用的define 技巧


沒有留言:

張貼留言