涵数前加了一个inline保留字是什么意思呢?会否速度提高点,真正嵌入到调用之处,而无须在调用过程中压堆栈等操作?我做了个实验,好象效果并没有多大的提高.

解决方案 »

  1.   

    编译器默认把短代码的函数都认为是inline的,所以效果一样。
      

  2.   

    现在的编译器都很聪明,所以通常只是写给人看的……
    强制内联的关键字是_inline或__inline(忘记是一个还是两个下划线了),真要试效果用这个看看
      

  3.   

    inline是内联关键字,当成员函数的代码不是很多的,而且在程序中要反复的调用的时候,就可以将此函数设置为内联函数。这样在编译的时候,就会在调用的时候像宏那样的展开,而不是在执行的时候去反复的寻找函数的地址,从而能够提高程序的效率。当然,使用内联函数是以增加内存空间而换取执行效率。
    你不妨作以下以下的实验:
    设计一个函数,其中只有1-2句执行代码,然后再在一个循环中反复的调用。分别将函数设置为内联函数和非内联函数,通过计算循环消耗的时间来比较(一般的主观上看可能看不出来)
    附计算程序执行时间代码:
    __int64     lfreq;
    BOOL     bret=QueryPerformanceFrequency((LARGE_INTEGER*)&lfreq);
    __int64     lstart;
    QueryPerformanceCounter((LARGE_INTEGER*)&lstart);
    //在这里放置循环代码
    __int64     lstop;
    QueryPerformanceCounter((LARGE_INTEGER*)&lstop);
    __int64   lruntime=lstop   -   lstart;
    double   dsec=   lruntime/lfreq; 
    所得时间为毫秒
      

  4.   


    我比较同意无处不在的观点
    一般情况下不用显示的添加inline
      

  5.   

    我赞同使用inline就是取代宏。林锐博士的《高质量C++编程指南》就认为inline函数是取宏之长而弃宏之短。    不同意dch4890164(跳梁小丑)的一般情况下不用显示的添加inline的观点,我认为为了统一,函数体不宜放在.h,如果不显式添加inline,就只有放在.h文件。
      

  6.   

    C++中一个宏的更好替代品,当然只能替代宏的部分功能。理论上将可以省去函数的调用开销,滥用会产生代码膨胀的后果。但实际编译时编译器会根据实际情况进行优化,来决定是否真的进行inline。