2012-09-28 70 views
4

我正在VxWorks上開發嵌入式應用程序。C中的靜態函數和非靜態函數之間的差別

我知道靜態函數僅在定義文件中調用,並且在源項目中的任何文件中調用非靜態函數。

我不知道是否有靜態和非靜態函數concening執行時間和有關內存之間的差異

回答

11

絕對沒有任何性能上的差異。 static關鍵字在函數上唯一的作用是給它們內部的linkage,這意味着它們只能在定義的文件中訪問。

2

執行時間或運行時內存要求沒有差別。

一些(許多?)連接器會發現更容易發現未使用的靜態函數並將它們放下,因此它們可能會鼓勵更小的代碼大小。

2

這取決於你的編譯器。靜態函數理論上可以更好地優化,因爲編譯器會知道它們被調用的所有地方。你應該能夠從你的編譯器中獲得彙編列表,並且找出它們是否更有效。

+0

運行性能有差異嗎?而不是關於編譯和鏈接? – MOHAMED

+0

爲什麼這會降低投票率? –