1. 程式人生 > 程式設計 >C語言#define拼接巨集定義實現方式

C語言#define拼接巨集定義實現方式

使用場合:拼接兩個巨集,一個是傳入的巨集。但是傳入的巨集不會被替換,反而原封不動的接了上去,這就尷尬了。經過各種嘗試,居然成了,特此記錄分享一下,方便大家學習。

char A_param=0;

char B_pramm=0;

//新增巨集定義

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

void fun()
{

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

  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)

//最終目的就是想實現 TIM4->PSC=X,我的目的達到了

以上這篇C語言#define拼接巨集定義實現方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。