可能重复:
C function syntax, parameter types declared after parameter list
What is useful about this C syntax?
Why are declarations put between func() and {}?
大家好,
我下载了glibc。我想从这个librairy中重用一些代码部分,但是在这段代码中有一些奇怪的东西。实际上,参数声明很奇怪。在que parantheses之后声明的参数的类型。我以前从未见过。什么是这种宣言?我无法编译它。
void
_ufc_doit_r(itr, __data, res)
ufc_long itr, *res;
struct crypt_data * __restrict __data;
{
/*CODE HERE */
}
答案 0 :(得分:4)
这被称为“K& R”风格,来自Kernighan和Ritchie,他写了这本书The C Programming Language。在该书的第一版中,以上是 only 方式来声明参数类型。我相信第二版使用标准样式,括号内的类型和名称:
void
_ufc_doit_r(ufc_long itr,
struct crypt_data * __restrict __data,
ufc_long *res)
{
/*CODE HERE */
}
K& R样式是一种非常古老的声明参数样式,但有些人仍然使用它,因此他们的代码可以在非常旧的编译器上编译。
答案 1 :(得分:2)
这是声明参数的数据类型的旧样式。它的现代等价物是:
void
_ufc_doit_r(
ufc_long itr,
struct crypt_data * __restrict __data,
ufc_long res
)
{
/*CODE HERE */
}