我正在嘗試創建一個類似于 的函式printf(),我希望它接受多個引數,以便在列印時可以使用它們,大致如下所示:
void PRINT_RED(string, ...) {
fprintf(stderr, "\033[91m");
fprintf(stderr, "%s", string, __va_arg_pack());
fprintf(stderr, "\033[0m");
}
考慮到我希望它具有以下示例 API PRINT_RED("%s %s %d", string1, string2, int1);。
但作為一個宏,所以我試過:
#define PRINT_RED(string, ...) \
fprintf(stderr, "\033[91m"); \
fprintf(stderr, "%s", string, __va_arg_pack()); \
fprintf(stderr, "\033[0m");
顯然__va_arg_pack()只能在行內函式中定義......有人可以指導我如何處理宏函式中的多個引數嗎?
uj5u.com熱心網友回復:
您正在尋找的是 macro __VA_ARGS__,它轉換為傳遞給宏的變數引數。
#define PRINT_RED(string, ...) \
fprintf(stderr, "\033[91m"); \
fprintf(stderr, "%s", string, __VA_ARGS__); \
fprintf(stderr, "\033[0m");
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/393255.html
