部落格117 核心如何巧妙實現 min與max函式

2021-10-01 03:47:30 字數 823 閱讀 2334

內容:記錄一下看了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分支用來存放 的原始檔案...