规范GCC代码; int main PARAMS((int argc,char ** argv)); return function_name define_as_parameter

时间:2017-08-03 14:38:18

标签: c gcc

最近,当我在gcc spec基准测试中运行一些clang实现时,我发现以下是gcc spec源代码:

int main PARAMS ((int argc, char **argv));

从c编程的角度来看,究竟是什么意思?可能是什么原因使用它?

1 个答案:

答案 0 :(得分:4)

这是为了与不支持函数原型的古代编译器兼容。

现代编译器接受:

int main (int argc, char **argv);

古代人需要:

int main ();

因此,为了支持可能没有可变参数的预处理器,您可以这样做:

#if __STDC__ 
/*all standard compliant compilers since the 1st version of the standard 
  must both define __STDC__ to a truthy value and support function prototypes*/
#    define PARAMS(X) X
#else
#    define PARAMS(X) ()
#endif
/*...*/
int main PARAMS ((int argc, char **argv));