inline函数使用容易导致出错的问题

来源:互联网 发布:淘宝一直访问受限 编辑:程序博客网 时间:2024/06/10 09:45

对于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()。

 

原创粉丝点击