函数参数类型的奇怪位置

时间:2013-01-29 12:57:38

标签: c

  

可能重复:
  C function syntax, parameter types declared after parameter list

我浏览了一些C代码并找到了inet_pton函数的定义(在.c文件中):

int
inet_pton(af, src, dst)
    int af;
    const char *src;
    void *dst;
...

这里有趣的是,函数的参数以我以前从未见过的方式指定了它们的类型。在相应的头文件中,参数类型通常指定:

extern int inet_pton (int __af, __const char *__restrict __cp,
              void *__restrict __buf) __THROW;

我的问题是:这是某种C技巧吗?您是否可以始终在其范围内定义函数的参数类型?

3 个答案:

答案 0 :(得分:5)

看起来像老了,Kernighan& Ritchie C风格。

虽然它可以在遗留代码中找到,但这种编码风格不再被认为是好的做法,我想它与ANSI C或更现代的C99或C11不兼容,所以不要使用它。

答案 1 :(得分:3)

答案 2 :(得分:2)

这是旧的K& R风格。等效的现代方法是:

int inet_pton(int af, const char *src,    void *dst) {
...