2017-02-23 123 views
0

如果有一個宏是另一個宏的參數,並且該參數要在宏定義中進行字符串化,是否可以將作爲參數的宏但不是其原始值?一個例子如下,字符串化嵌套宏

#define EXAMPLE "original" 
#define CONCATENATE(X) "Concatenate Strings " #X 

CONCATENATE(BYTE) //Results as "Concatenate Strings EXAMPLE" 
        //I need "Concatenate Strings original" 

有沒有一種方法可以讓我將string的原始值作爲參數給出?

+0

可能是一個可能重複這個問題直接關係到一個特定的問題,而其他的書名尚未標題是有點更普遍。 – ugar

回答

1

當生成標記時,字符串化運算符會抑制宏參數擴展。爲了強制它,你需要通過一箇中間宏來傳遞參數。

例如,通過使CONCATENATE一個完整的包裝:

#define CONCATENATE_(X, Y) X #Y 
#define CONCATENATE(X) CONCATENATE_("Concatenate Strings", X)