inline函式使用容易導致出錯的問題

2021-05-27 18:57:24 字數 812 閱讀 1106

對於inline函式,首先應該要短小(inline只是對編譯器的乙個建議,編譯器是可以忽略的),其次inline函式的定義一定要與呼叫它的部分在同乙個原始檔裡,不同的原始檔可以分別定義乙個相同inline函式,內容都可以不同(不違反重複定義原則),但是這樣做會引起程式呼叫的不確定性,應該避免這種情況。為此,可採用將inline函式放在另外乙個單獨的檔案裡,那個檔案需要用就呼叫這個檔案。

我再dev c++裡做了乙個測試:

新建乙個空工程pj1,裡面有兩個檔案1. cpp,2.cpp

其中1.cpp

inline int min(int a, int b)

return a;

int get1(int a, int b)

return min(a, b);

2.cpp

# include

using namespace std;

inline int min(int a, int b)

return b;

int get2(int a, int b)

return min(a, b);

int get1(int, int);

int main(int argc, char *argv)

cout << get1(3, 4) << endl;

cout << get2(3, 4) << endl;

char p;

cin >> p;

return 0;

結果程式跑出來得結果是:

很明顯程式只呼叫了1.cpp中的min(),由此引起了問題(沒有呼叫2.cpp中的min()。

inline 函式的使用 應寫在實現的前面)

在c 中,inline函式,即內聯函式,是在函式實現的返回值前面加入關鍵字inline。下面集中情況下,函式foo為內聯函式 1 inline void foo int x inline 與函式宣告和函式實現放在一起 inline void foo int x 2 void foo int x in...

php容易被錯誤使用的empty函式

在php的官方手冊中寫道,檢查乙個變數是否為空。如果 var 是非空或非零的值,則 empty 返回 false。換句話說,0 0 null false array var var 以及沒有任何屬性的物件都將被認為是空的,如果 var 為空,則返回 true。隨後在其手冊中鄭重說明了,empty 只...

php容易被錯誤使用的empty函式

在php的官方手冊中寫道,檢查乙個變數是否為空。如果 var 是非空或非零的值,則 empty 返回 false。換句話說,0 0 null false array var var 以及沒有任何屬性的物件都將被認為是空的,如果 var 為空,則返回 true。隨後在其手冊中鄭重說明了,empty 只...