2012-10-31 41 views
1

我目前正在研究ARM的u-boot流程。我發現這種格式__funcname__許多功能。爲什麼在文件名之前和之後使用2個下劃線?爲什麼函數有兩個下劃線

+2

因爲誰實現的功能編程之前,其名稱後添加兩個下劃線。 – 2012-10-31 06:53:02

+0

只是作者喜歡的命名約定。 –

+2

其實他們是保留執行,檢查了這個http://stackoverflow.com/questions/1449181/what-does-double-underscore-const-mean-in-c – imreal

回答

3

它應該表明該函數用於系統級代碼。我相信在的某些編譯器中,它們的處理方式與普通函數不同。我認爲這不是一個必要條件,但我認爲這是過去的事情,傳統要麼繼續進行,要麼你正在看一些舊的代碼。

3

關鍵字以兩個前導下劃線或前導下劃線開頭,後跟大寫字母保留。它們可以被標準庫和操作系統使用。這樣,這些功能將不可用的功能在用戶空間的名稱衝突(如果他們這樣做,然後它是用戶的過錯那些名字resereved!)

+0

+1假設這是C或C++我們正在談論。 IIRC標準定義了一些特殊的'__whatever__'符號,大多數編譯器定義了更多 - 例如預處理器符號,如'__GNUC__'和內置函數,如'__builtin_popcount'(計數設置位數)。但是,除非你維護那個編譯器的庫,否則還有更多的符號是你不應該知道的。 – Steve314

相關問題