為什麼在C 中明確表示“內聯”
Possible Duplicate:
07000
所以這是一個問題,我已經把我弄了一陣子,我無法得到一個明確的答案.我的理解是,一個好的編譯器通常會意識到當它對於線上功能是安全和有利的,並且如果優化被開啟,它將使所有這樣的功能保持天氣,它們被明確地標識為線上功能由程式員否則.另外,一個編譯器會認識到什麼時候對一個函式進行內聯是不安全/敏感的,在這種情況下,簡單地忽略程式設計師對線上函式的請求.
因此,我想知道明確說明一個函式線上的優點是什麼?只要優化被切換,編譯器就會將其認為合適的所有功能列入內聯,只有這些功能.
由於巢狀的h檔案,我已經發現了一些關於內聯保護多個定義的討論,但是確定#ifdefine的標題原始碼是更好的做法,並再次使用關鍵字inline void?
而不受懲罰.基本上,它告訴連結器許多翻譯單元可以看到這個定義,所以它不應該在多個翻譯單元上找到它.
一些編譯器可以將其視為一個行內函數的提示,但這完全取決於編譯器,完全有效,只是忽略該提示.
頭衛只能保護同一個翻譯單元上的多個定義.他們不能跨翻譯單位工作.
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/11507959/why-explicitly-state-inline-in-c