需要说明的是,C++中的inline是建议型关键字,其编译细节需要参阅编译器的说明文档。
以下测试使用了GCC,打开了如下编译开关,
Project->Build options->GNU GCC Compiler->Compiler Flags->Optimations->勾选 Optimize fully(for speed) [-O3]项
一、编译如下源文件,确定函数调用的反汇编:
#include <cstdlib>
#include <iostream>
using namespace std;
void f(int i) {
i++;
cout<<i;
return ;
}
void f2(){
int i, j ,k;
i = j + k;
for (i =1; i < j;i++){
cout<<k;
}
i+=j;
k++;
return;
}
void f1(){
int i, j ,k;
i = j + k;
for (i = 10; i < k;i++){
cout<<k;
}
i+=j++;
k--;
return;
}
//==========================
int main(int argc, char *argv[]){
int j;
//Abc a;
f1();
f(j);
f2();
cin>>j;
return EXIT_SUCCESS;
}
main 函数的反汇编,可以看到正常的函数调用
.....
0x4013c0 call 0x41c310 <__main>
//注意以下5行
0x4013c5 call 0x4013ad <f1()>
0x4013ca mov -0xc(%ebp),%eax
0x4013cd mov %eax,(%esp)
0x4013d0 call 0x40138d <f(int)>
0x4013d5 call 0x4013ab <f2()>
0x4013da lea -0xc(%ebp),%eax
0x4013dd mov %eax,(%esp)
0x4013e0 mov $0x489a00,%ecx
0x4013e5 call 0x456a10 <std::istream::operator>>(int&)>