C++ 不定參宏展開

一、通過不定參宏進行日誌輸出

#define LOGINFO(fmt,...) printf("[%s][%s]", __FUNCTION__, GETINFO(fmt, __VA_ARGS__))

   通過參數  __VA_ARGS__ 來展開不定參數,  這裏藉助宏可以輸出日誌的位置等信息。

   這裏不定參的輸入如果爲空,linux下可能無法編譯通過,你需要加 ##

#define LOGINFO(fmt,...) printf("[%s][%s]", __FUNCTION__, GETINFO(fmt, ## __VA_ARGS__))

二、如果你需要在宏中繼續展開並使用參數,在windows下會變成一個參數,如下:

#define SUBPROCESS(X,...) X
#define MYPROCESS(...)  SUBPROCESS(__VA_ARGS__)

X取到的,將會時所有的參數,你可以用以下辦法解決

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