inline內聯函數

C++中的const常量能夠替代宏常數定義,如:ios

const int A = 3; è #define A 3函數

C++中是否有解決方案替代宏代碼片斷呢?(替代宏代碼片斷就能夠避免宏的反作用!)spa

 

C++中推薦使用內聯函數替代宏代碼片斷code

 

C++中使用inline關鍵字聲明內聯函數blog

 

 

內聯函數聲明時inline關鍵字必須和函數定義結合在一塊兒,不然編譯器會直接忽略內聯請求。編譯器

 

帶參數的宏和函數調用io

 

#include <iostream>
using namespace std;

//帶參數的宏
#define MYFUNC(a,b) ((a)<(b)?(a):(b))

inline int myfunc(int a, int b)
{
    return a < b ? a : b;
}

int main(void)
{
    int a = 1;
    int b = 3;
    
    //通常狀況不要使用++,--作函數參數
    int c = myfunc(++a,b); //a=2,b=3,c=2
    //int c = MYFUNC(++a,b);  //a=3,b=3,c=3
                        //宏替換並展開 ((++a)<(b)?(++a):(b))
    
    printf("a=%d\n",a);
    printf("b=%d\n",b);
    printf("c=%d\n",c);
    
    cout<<"hello..."<<endl;
    
    return 0;    
}
相關文章
相關標籤/搜索