2011-12-21 4 views
4

可能性の重複:
how does do{} while(0) work in macro?なぜ、(見かけ上)無意味なループで複数行のマクロがラップされているのを見続けていますか?

thisブログ記事からの例:

#define VTAILQ_INSERT_BEFORE(listelm, elm, field) do {    \ 
    (elm)->field.vtqe_prev = (listelm)->field.vtqe_prev;   \ 
    VTAILQ_NEXT((elm), field) = (listelm);       \ 
    *(listelm)->field.vtqe_prev = (elm);       \ 
    (listelm)->field.vtqe_prev = &VTAILQ_NEXT((elm), field);  \ 
} while (0) 

私は他の人に遭遇しましたが、この1は私が

十分によく何を意味するかを浮き彫りに

答えて

関連する問題