2015-11-04 62 views
4

因此,當考慮讓我的定義宏工作,我發現了###宏助手,並用它們來簡化我的宏。宏的關鍵部分將變量設置爲包含變量名稱的字符串(但不包括變量名稱)。作爲一個簡單的例子,我們來看一個名爲SET(X)的宏,它應該將SET(something)擴展爲something = "pre_something"是否有一個宏的前綴和引用C宏參數的一個宏的方法

到目前爲止,我發現的唯一方法是使用兩個宏,如#define QUOTE(X) #X#define SET(X) X = QUOTE(pre_##X)。但是,使用多個宏看起來過多,並且可能會導致進一步的宏擴展(我認爲)出現問題。是否有一種更乾淨,單線的做同樣的事情?

回答

4

#define SET(x) x = "pre_"#x

Ç確實字符串連接在編譯時,於是兩個字符串文字彼此相鄰是級聯。

"hello " "world" - >"hello world"