C語言#define拼接宏定義實現

 使用場合:拼接兩個宏,一個是傳入的宏。可是傳入的宏不會被替換,反而原封不動的接了上去,這就尷尬了。通過各類嘗試,竟然成了,特此記錄分享一下,方便你們學習。學習

char A_param=0;.net

char B_pramm=0;blog

//添加宏定義原理

#define OBJECT         A 
#define DEFINE_(X)   X##_param       //一次定義
#define DEFINE(X)     DEFINE_(X) //再次定義
#define PARAM    DEFINE(OBJECT)分享

void fun()
{ps

//  DEFINE_(OBJECT)=100;  這個操做是拒絕的,它就是直接拼接不被替換void

   DEFINE(OBJECT)=100; //這個操做就神了,先替換再拼接,咱們只是作了二次定義,解決一切煩惱文章

   PARAM=100;//這樣也是能夠的

}

那最終是否是達到你的目的呢,實質的原理大概就是替換與拼接的前後順序,我沒有細細研究了。

下面是個人一個使用場合。

#define STEP_TIMx  4//TIM4
#define STEP_CHx  2//CH2

#define SET_STEP42_PPS_1(NUM,X)  TIM##NUM->PSC=((X))

#define SET_STEP42_PPS_2(NUM,X)  SET_STEP42_PPS_1(NUM,X)

#define SET_STEP42_PPS(X)     SET_STEP42_PPS_2(STEP_TIMx,X)

相關文章
相關標籤/搜索