2012-04-18 57 views
10

假設我想un-stringify應該將"text"轉換爲text的宏參數。有沒有辦法刪除C宏中的引號?

#define UN_STRINGIFY(x) /* some macro magic here */ 

現在調用這個宏將從它的參數

UN_STRINGIFY("text") // results in ----> text 

刪除""這將是宏字串的反面:

#define STRINGIFY(x) #x 

這是可能的,還是我用微距玩邪惡?

+0

你想做什麼,如果有可能的話? – iammilind 2012-04-18 13:46:35

+3

這是不可能的;出於好奇,有什麼用途? – dasblinkenlight 2012-04-18 13:46:38

+0

那麼,通常我只是使用stringify,但我重構了一些宏,並不想改變調用模式。 '#define THIS_MACRO(sringParam)const char * var = stringParam;'會變成'#define THIS_MACRO(stringParam)const char * un ## stringParam = stringParam;'。 – syvex 2012-04-18 14:10:38

回答

15

這是不可能的。這可能是一件好事:如果你傳遞一個字符串,你會認爲你可以在其中放入幾乎所有的東西。對它進行非串化會突然導致編譯器實際上關心該串的內容。

相關問題