小编ISl*_*ani的帖子

使用指向const char的指针作为va_start的第二个参数

我正在UNIX环境3版中进行高级编程,我找到了这段代码

err_msg(const char *fmt, ...)
{
    va_list     ap;

    va_start(ap, fmt);
    err_doit(0, 0, fmt, ap);
    va_end(ap);
} 
Run Code Online (Sandbox Code Playgroud)

err_doit是:

static void
err_doit(int errnoflag, int error, const char *fmt, va_list ap)
{
    char    buf[MAXLINE];

    vsnprintf(buf, MAXLINE-1, fmt, ap);
    if (errnoflag)
        snprintf(buf+strlen(buf), MAXLINE-strlen(buf)-1, ": %s",
          strerror(error));
    strcat(buf, "\n");
    fflush(stdout);     /* in case stdout and stderr are the same */
    fputs(buf, stderr);
    fflush(NULL);       /* flushes all stdio output streams */
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是,为什么作者传递指针const char作为参数va_start.据我所知,你只允许传递省略号部分所代表的参数数量,如下所述:

void f1(int …
Run Code Online (Sandbox Code Playgroud)

c unix pointers

2
推荐指数
1
解决办法
1016
查看次数

标签 统计

c ×1

pointers ×1

unix ×1