一、通過不定參宏進行日誌輸出
#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__))