我正在阅读make程序的源代码,我遇到了以下函数声明:
struct dep *
read_all_makefiles (makefiles)
char **makefiles;
{ ... followed by function code ...
我们如何破译这个声明?
答案 0 :(得分:2)
这是旧的K& R风格的函数参数声明,在ANSI / ISO标准C之前。这种风格现在已经过时,但仍然可以在一些非常古老的代码中找到。虽然它仍处于标准状态,但建议不再这样写。
要解密,只需将参数声明列表一个接一个地移回函数原型,并使用标识符匹配。
引用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