內容:記錄一下看了linux核心的min,max函式的實現,非常的巧妙且精細,分享一下
#define min(x, y) ()
#define max(x, y) ()
#define min3(x, y, z) ()
#define max3(x, y, z) ()
巧妙之處解析:1.(
void)(
&_min1 ==
&_min2)
; 無意義的比較究竟意義何在?答:(
void)(
&x ==
&y);這種式子使得,如果x和y的型別不一樣,其指標型別也會不一樣,2個
不一樣的指標型別進行比較操作,則會引起編譯器產生乙個編譯警告,提示你這兩個值的型別
不同。通過void顯式丟棄乙個表示式的值,否則有些編譯器會就此給出警告資訊。
(如果不加void,則會提示你這行**是無意義的,沒人用到,有些編譯器會產生警告資訊。)
2.為何引入臨時變數?
答:避免表示式的結果可能根據出現多種結果。比如:
min(
++a,
++b)
==>((
++a)
<
(++b))?
(++a):(
++b)
這個時候a和b的大小關係會影響到a,b的值被執行幾次的++
是不是很奇妙?其實核心的奇妙之處遠不如這麼多的,比如container_of巨集,核心鍊錶實現等等都非常
funny,有空的同學可以去繼續去看看
div靠邊隱藏 如何巧妙在網頁中實現DIV層隱藏
原方法 片段 style visibility none document.getelementbyid divlayer1 style.visibility hidden 隱藏 document.getelementbyid divlayer1 style.visibility visible 顯...
企業核心部門如何實現對文件進行加密?
如今社會已完全步入資訊產生價值的資訊化時代,資訊化對我們日常生活中的方方面面日漸產生著不可替代的作用。而對企業來說,資訊資料是最寶貴的知識資產,一旦發生資料洩密則會對企業造成巨大的威脅,很多企業也意識到保護核心機密的重要性,經過深思熟慮,最終還是選擇了當下最為嚴密的保密工具 加密軟體,對企業的核心資...
如何實現hexo部落格的不同電腦間的遷移和同步
如何實現部落格的版本管理?也就是原電腦和新電腦都可以提交 更新部落格,實現同步。首先要知道通過github pages hexo搭建的部落格,在username.github.io的倉庫儲存的是生成的靜態網頁,而真正的原始檔案在本地的hexo資料夾中。原電腦操作 乙個hexo分支用來存放 的原始檔案...