【发布时间】:2021-12-25 18:24:51
【问题描述】:
我正在尝试制作一个类似于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() 只能在内联函数中定义...谁能指导我如何在宏函数中处理多个参数?
【问题讨论】: