1. 程式人生 > 實用技巧 >【Microsoft官方文件】編譯器內部函式-筆記(1)

【Microsoft官方文件】編譯器內部函式-筆記(1)

如果一個函式是內部函式,在通常會採用內聯方式插入該函式的程式碼,從而避免函式呼叫的開銷並可發出該函式的高效率計算機指令。 內部函式通常比等效的內聯程式集速度更快,因為優化程式擁有眾多內部函式行為方式的內建知識,因此可以優化使用內聯程式集無法優化的內容。 此外,優化程式還可以採用不同的方式擴充套件內部函式、對齊緩衝區或根據上下文和呼叫自變數進行其他方面的調整。

行內函數能提高函式的執行效率,不需要像引數和返回地址那樣在堆疊上或從堆疊中推送和彈出內容,儘管他會使二進位制檔案較大一些。
如果想把一個函式定義為行內函數,就需要在函式名前面放置關鍵字inline。

關鍵字 inline 必須與函式定義體放在一起才能使函式成為內聯,僅將 inline 放在函式宣告前面不起任何作用。

inline void test(int x, int y);   // inline 只跟test函式的宣告放在一起,這是錯誤的
void test(int x, int y)
{
 ...
} 
void test(int x, int y);   
inline void test(int x, int y) //inline跟函式定義體放在一起,這是正確的食用方法
{
 ...
} 

定義在類宣告之中的成員函式將自動地成為行內函數。

class A
{ 
public:
 void B(int x, int y) { ... }   //這裡它就成為了行內函數
} 

內聯那些包含迴圈或 switch 語句的函式常常是得不償失 (除非在大多數情況下, 這些迴圈或 switch 語句從不被執行).

參考https://blog.csdn.net/u011327981/article/details/50601800/