inline函数使用容易导致出错的问题
對(duì)于inline函數(shù),首先應(yīng)該要短小(inline只是對(duì)編譯器的一個(gè)建議,編譯器是可以忽略的),其次inline函數(shù)的定義一定要與調(diào)用它的部分在同一個(gè)源文件里,不同的源文件可以分別定義一個(gè)相同inline函數(shù),內(nèi)容都可以不同(不違反重復(fù)定義原則),但是這樣做會(huì)引起程序調(diào)用的不確定性,應(yīng)該避免這種情況。為此,可采用將inline函數(shù)放在另外一個(gè)單獨(dú)的文件里,那個(gè)文件需要用就調(diào)用這個(gè)文件。
我再dev C++里做了一個(gè)測(cè)試:
新建一個(gè)空工程pj1,里面有兩個(gè)文件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;
}
?
結(jié)果程序跑出來(lái)得結(jié)果是:
3
3
很明顯程序只調(diào)用了1.cpp中的min(),由此引起了問(wèn)題(沒(méi)有調(diào)用2.cpp中的min()。
?
總結(jié)
以上是生活随笔為你收集整理的inline函数使用容易导致出错的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在ubuntu 中如何保存及播放DVD
- 下一篇: Dev C++ 中错误 stray 16