C語言#define拼接宏定義實(shí)現(xiàn)方式
使用場合:拼接兩個(gè)宏,一個(gè)是傳入的宏。但是傳入的宏不會被替換,反而原封不動的接了上去,這就尷尬了。經(jīng)過各種嘗試,居然成了,特此記錄分享一下,方便大家學(xué)習(xí)。
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; 這個(gè)操作是拒絕的,它就是直接拼接不被替換 DEFINE(OBJECT)=100; //這個(gè)操作就神了,先替換再拼接,我們只是做了二次定義,解決一切煩惱 PARAM=100;//這樣也是可以的 }
那最終是不是達(dá)到你的目的呢,實(shí)質(zhì)的原理大概就是替換與拼接的先后順序,我沒有細(xì)細(xì)研究了。
下面是我的一個(gè)使用場合。
#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) //最終目的就是想實(shí)現(xiàn) TIM4->PSC=X ,我的目的達(dá)到了
以上這篇C語言#define拼接宏定義實(shí)現(xiàn)方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解如何將Spire.Doc for C++集成到C++程序中
Spire.Doc for C++是一個(gè)專業(yè)的Word庫,供開發(fā)人員在任何類型的C++應(yīng)用程序中閱讀、創(chuàng)建、編輯、比較和轉(zhuǎn)換 Word 文檔,本文演示了如何以兩種不同的方式將 Spire.Doc for C++ 集成到您的 C++ 應(yīng)用程序中,希望對大家有所幫助2023-05-05c語言實(shí)現(xiàn)系統(tǒng)時(shí)間校正工具代碼分享
這篇文章主要介紹了c語言實(shí)現(xiàn)系統(tǒng)時(shí)間校正工具,大家參考使用吧2014-01-01C++中構(gòu)造函數(shù)的參數(shù)缺省的詳解
這篇文章主要介紹了C++中構(gòu)造函數(shù)的參數(shù)缺省的詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10C語言實(shí)現(xiàn)經(jīng)典小游戲井字棋的示例代碼
這個(gè)三子棋游戲是在學(xué)習(xí)C語言的過程中自己編寫的一個(gè)小游戲,現(xiàn)在將自己的思路(主要以流程圖形式和代碼中的注釋表達(dá))和具體代碼以及運(yùn)行結(jié)果分享出來以供大家學(xué)習(xí)參考,希望對大家有所幫助2022-11-11