This question already has answers here:
Closed last year.
Alternative (K&R) C syntax for function declaration versus prototypes
(5个答案)
我在浏览make程序的源代码时发现了以下函数声明:
    struct dep *
    read_all_makefiles (makefiles)
    char **makefiles;
    { ... followed by function code ...

我们如何解读这份声明?

最佳答案

这是在ANSI/ISO标准C之前,函数参数声明的旧K&R样式。这种样式现在已经过时了,但仍然可以在一些非常旧的代码中找到。虽然它仍然是标准的,但建议不要再这样写了。
要解密,只需将参数声明列表一个接一个地移回函数原型,并匹配标识符。
引用草案N1570,§6.9.1/13:
例1

extern int max(int a, int b)
{
    return a > b ? a : b;
}

例2
extern int max(a, b)
int a, b;
{
    return a > b ? a : b;
}

Alternative (K&R) C syntax for function declaration versus prototypes

关于c - 签名后带有变量的C函数声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48554755/

10-16 19:16