開源代碼中的遞歸宏

這個是將所有的字節順序完全顛倒的一個宏,調用BSWAP_64(x) 即可將x的Byte順序完全顛倒,實現非常簡潔,足見實現者的功力。
#define BSWAP_8(x) ((x) & 0xff)
#define BSWAP_16(x) ((BSWAP_8(x) << 8) | BSWAP_8((x) >> 8))
#define BSWAP_32(x) ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16))
#define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32))
下面的這個方法神了,因爲他並不需要定義一個變量就可以實現交換兩個數。
 #define swap(a, b) \
(((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b)))
上面的這個完全就是利用了RAID中的xor思想啊,神奇啊。而且減少了變量的申請和釋放。
多看看內核代碼,多學習一下內核中的宏的使用,還是挺提高編程能力的。
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
閱讀(229) | 評論(1) | 轉發(0) |
給主人留下些什麼吧!~~
14_avatar_small.jpg

xiaoyesbb2013-07-09 17:42:58

支持支持!<a href="http://www.jztou.com"> </a>

評論熱議
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章