2015-10-19 64 views
-1

當我新的C,我知道您在使用此格式兩個變量定義功能

return_type function_name(args) 
{ 
    ... body ... 
} 

定義一個函數,但後來我看到從內核驗證碼:https://github.com/torvalds/linux/blob/master/kernel/time/tick-broadcast.c#L995L1005

其中一個功能定義是這樣的:

void __init tick_broadcast_init(void) 
{ 
    ... body ... 
} 

它看起來像有兩個變量,__inittick_broadcast_init。任何人都知道發生了什麼事?

+1

在返回類型和函數名稱之間,可能存在特定於編譯器的屬性(例如控制可執行文件部分的指令,調用約定和其他內容)。 '__init'就是這種情況(實際上是一個擴展到其中幾個屬性的宏)。 –

回答

2

__inittick_broadcast_init不是變量。

__init是一個宏查看here更多的解釋。

tick_broadcast_init是您的函數名稱。

您的退貨類型爲void這意味着「無」,因此實際上沒有數據回報。