阅读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
。这是一个有效的语法?它在做什么?
答案 0 :(得分:1)
这是旧式的做事方式,K& R,前ANSI。
一旦引入了函数原型,这种做法就变得过时了。
实际上已经过时了,因为即使在C11中它仍然有效(根据6.9.1 Function definitions /13
),但很少有人再使用它了。
它指定功能块的参数类型,类似于:
char *strerror (int errnum)