参数列表后面的变量声明

时间:2014-06-27 04:54:50

标签: c glibc

阅读glibc,我在string/strerror.c中看到了这段代码:

char *
strerror (errnum)
     int errnum;
{
  char *ret = __strerror_r (errnum, NULL, 0);
  int saved_errno;

  if (__glibc_likely (ret != NULL))
    return ret;
  saved_errno = errno;
  if (buf == NULL)
    buf = malloc (1024);
  __set_errno (saved_errno);
  if (buf == NULL)
    return _("Unknown error");
  return __strerror_r (errnum, buf, 1024);
}

请注意参数列表后面是否有int errnum。这是一个有效的语法?它在做什么?

1 个答案:

答案 0 :(得分:1)

这是旧式的做事方式,K& R,前ANSI。

一旦引入了函数原型,这种做法就变得过时了。

实际上已经过时了,因为即使在C11中它仍然有效(根据6.9.1 Function definitions /13),但很少有人再使用它了。

它指定功能块的参数类型,类似于:

char *strerror (int errnum)