C語言#define拼接巨集定義實現方式
阿新 • • 發佈:2020-01-07
使用場合:拼接兩個巨集,一個是傳入的巨集。但是傳入的巨集不會被替換,反而原封不動的接了上去,這就尷尬了。經過各種嘗試,居然成了,特此記錄分享一下,方便大家學習。
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拼接巨集定義實現方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。