-
-
[旧帖]
[讨论]关于C++ 内联函数的编译问题
0.00雪花
-
发表于:
2008-4-6 21:53
3002
-
[旧帖] [讨论]关于C++ 内联函数的编译问题
0.00雪花
编译环境 VC6 DEBUG
#include <iostream>
#include <string>
using namespace std;// No.1
inline string dbtest(int a);//定义内联函数
void main()
{
for (int i=1;i<=10;i++)
{
cout << i << ":" << dbtest(i) << endl;
}
cin.get();
}
string dbtest(int a)
{
return (a%2>0)?"y":"n";
}
为什么编译后的代码是这样的。
00401915 push offset @ILT+240(std::endl) (004010f5)
0040191A mov ecx,dword ptr [ebp-10h]
0040191D push ecx
0040191E lea edx,[ebp-20h]
00401921 push edx
00401922 call @ILT+660(dbtest) (00401299)
00401927 add esp,8
为什么不是直接把函数的主体部分的代码嵌入?难道是编译器的问题?
还是?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课