C 函数参数类型的奇怪放置

C 函数参数类型的奇怪放置,c,C,可能重复: 我浏览了一些C代码,找到了inet\u pton函数的定义(在.C文件中): 有趣的是,函数的参数以我以前从未见过的方式指定了它们的类型。在相应的头文件上,参数类型按常规指定: extern int inet_pton (int __af, __const char *__restrict __cp, void *__restrict __buf) __THROW; 我的问题是:这是某种C技巧吗?您能否始终为其作用域内的函数定义参数类型?它看起来像旧的

可能重复:

我浏览了一些C代码,找到了
inet\u pton
函数的定义(在.C文件中):

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

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

我的问题是:这是某种C技巧吗?您能否始终为其作用域内的函数定义参数类型?

它看起来像旧的Kernighan&Ritchie C风格


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

ANSI C之前的代码,请参见此处:
这是老K&R风格。等效的现代方法是:

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

它仍然允许IMHO.glibc主要使用这种样式,所以是的,它与C99和C11兼容。
int inet_pton(int af, const char *src,    void *dst) {
...