C/C++ 宏拼接和宏展開爲字符串

前言

有一個需求是將一個宏和一個字符串拼接,然後在代碼中拿到這個字符串,記錄一下。

方案

首先,我們知道非常常見的一個宏的拼接和展示字符串的宏定義

#define CONTACT(x,y) x##y   //拼接
#define STR(x) #x   //轉字符串

這種宏定義在開發中是很常見的!

但是,如果上邊我們那個需求中,讓一個字符串和一個宏的值進行拼接的話,純粹使用上邊的宏就不行了,這裏我們要使用二級的宏,這樣才能拼接到宏的值:

//二級
#define CONTACT2(x,y) CONTACT(x,y)
#define STR2(x) STR(x) 

那麼這時候,舉個例子,比如說,我們需要在"build_id_"後邊加上對應的ID

#define ID 111

//我們可以
#define build_id_str CONTACT2(build_id_, ID)

//在代碼中獲取對應的宏展示字符串
char *build_id = STR2(build_id_str);
print("build_id:  %s\n", build_id);

將輸出拼接好的字符串:build_id_111

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章