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; }