我需要使編譯器不內聯內聯函數。 例如:本地禁用函數內聯
我有一個內聯函數A。
我有一個功能B,調用A。
在B,A被內聯,這是完美的。
現在我有一個功能C多次調用A。
C,A被內聯,並且它不好。
是否可以告訴編譯器不會內聯一個當它從Ç叫什麼名字?
- 編輯 -
第一個想法是創建函數__declspec(noinline始終)A1(即簡單地調用甲)和呼叫A1代替甲在Ç 。
但我想知道是否有更優雅的解決方案?
注
我知道直列只是一個建議,但在我的計劃,我有一些不太可能或錯誤的情況下,編譯器內聯函數,但不應該因爲在這些情況下,我更喜歡函數調用,以減少代碼大小。我還注意到,編譯器並不總是能夠做出最佳選擇(從開發人員的角度來看)
您正在使用哪種編譯器?它們中的一些指定了讓你說該函數不應該內聯的編譯指示。 – 2011-02-01 12:00:49
請注意,編譯器可能已經爲你做了這個。至少在C++中,「inline」關鍵字僅僅是編譯器的一個提示,如果編譯器認爲這是一個壞主意,編譯器可以決定不內聯。 – 2011-02-01 12:01:59
如何通過函數指針調用它? – 2011-02-01 12:04:07