4
我正在使用包含一組預處理器庫的庫。其中之一是FOR_EACH風格宏,它遍歷__VA_ARGS__
併爲每個參數調用用戶提供的宏。提供宏觀的用戶稱爲像:SOME_MACRO(current_arg)
具有「佔位符」值的宏
然而,問題是,它僅與採取單參數用戶提供的宏的作品。我試圖做一些特殊的事情,其中包括struct
的名稱和結構中的每個字段。問題是,這需要宏的兩個參數。
由於我正在使用的庫只接受一元宏,有沒有辦法將一個額外的參數「綁定」到我的宏?
截至目前,我必須在我的宏中硬編碼結構的名稱。所以,如果我的工作的struct
名爲Foo
,我不得不說:
#define MY_MACRO(FIELD) /* do something with &Foo::FIELD */
有什麼方法我可以「綁定」第二STRUCT
參數宏,也許一些進一步的間接,使當庫調用我的宏時,它將能夠擴展爲:
#define MY_MACRO(FIELD) /* do something with &STRUCT::FIELD */
也許你可以有'FIELD'是'(A,B)',所以A'是'STRUCT'的值,'B'是'FIELD'的值(在你的擴展中)? – 2011-05-21 16:33:23
我很想知道這是否可能。 – 2011-05-21 17:10:59
增加了預處理器標籤,允許搜索@iammilind解釋的技術。 – 2011-05-21 17:20:54