繁体   English   中英

具有未定义参数编号的函数,该函数调用printf()

[英]A function with undefined argument numbers which call printf()

我试图创建一个调用printf的函数(在我的情况下,我使用curses调用printw),之所以这样做,是因为我想传递颜色并在同一函数中进行刷新,所以我不想每次写3行显示一些内容,我只需要使用一个函数执行一次,因此该函数可以在C中创建如下外观:

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

您可以使用vw_printw做到这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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM