inline函数使用容易导致出错的问题
對于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<iostream>
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;
}
?
結果程序跑出來得結果是:
3
3
很明顯程序只調用了1.cpp中的min(),由此引起了問題(沒有調用2.cpp中的min()。
?
總結
以上是生活随笔為你收集整理的inline函数使用容易导致出错的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在ubuntu 中如何保存及播放DVD
- 下一篇: Dev C++ 中错误 stray 16