可能重复:
C variable declarations after function heading in definition
What is useful about this C syntax?
我试图理解一些C代码并遇到了这个函数的头部和第一个支撑之间声明变量的地方。
知道这些变量是什么吗? 他们是本地的还是全球的?
作者打算在这做什么?
void someFunction (m_ptr, n_ptr, params, err)
integer *m_ptr; /* pointer to number of points to fit */
integer *n_ptr; /* pointer to number of parameters */
doublereal *params; /* vector of parameters */
doublereal *err; /* vector of error from data */
{
//some variables declared here
int i;
...
...
//body of the function here
}
答案 0 :(得分:7)
它们是函数参数。这是声明它们的另一种方法。它们的工作方式与普通参数相同。
对于一个相当长但信息量很大的解释,请参阅Alternative (K&R) C syntax for function declaration versus prototypes
答案 1 :(得分:3)
这些变量是参数的声明。不知道为什么有人再使用这种风格。那些类型必须是typedef。
如果这是旧的遗留代码,那么当时作为关键字真的存在吗?
答案 2 :(得分:2)
这是一个K& R风格的声明,它是30年前写的C(它仍然受支持,但在C99中被弃用;我相信它将在C1x中被删除)。从类型的外观来看,代码可能是从Fortran转换而来的,所以谁知道原始版本有多久了。
然而,由于void
的存在,原始K& R并不严格。
在“现代”C中,它看起来像:
void someFunction (integer *m_ptr, integer *n_ptr,
doublereal *params, doublereal *err)
{
//some variables declared here
int i;
...
...
//body of the function here
}