一个带有未定义参数号的函数,它调用printf()

时间:2018-02-17 11:26:50

标签: c console printf curses

我试图创建一个调用printf的函数(在我的情况下使用curses打印)以及我这样做的原因因为我想传递颜色并在同一个函数中进行刷新,所以不是每次都写3行我想要展示一些东西,我只需要用一个函数做一次,所以我要创建的函数在C中看起来像这样:

void outputConsole(int color_id, const char* a, ...)
{
    attron(COLOR_PAIR(2));
    printw(a,...);
    refresh();
}

1 个答案:

答案 0 :(得分:2)

您可以使用vw_printw执行此操作。解决方案是

void outputConsole(int color_id, const char* a, ...)
{
    attron(COLOR_PAIR(2));
    va_list args;
    va_start(args, a);
    vw_printw(stdscr, a, args);
    va_end(args);
    refresh();
}

同样在声明确保编译器格式字符串检查时,您可以像这样写

void outputConsole(int color_id, const char* a, ...)
#ifdef __GNUC__ 
       __attribute__(( format (printf, 2, 3)));
#else 
       ;
#endif