可能重复:
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技巧吗?您是否可以始终在其范围内定义函数的参数类型?
答案 0 :(得分:5)
看起来像老了,Kernighan& Ritchie C风格。
虽然它可以在遗留代码中找到,但这种编码风格不再被认为是好的做法,我想它与ANSI C或更现代的C99或C11不兼容,所以不要使用它。
答案 1 :(得分:3)
预先ANSI C样式代码,请参见此处: http://sunsite.ualberta.ca/Documentation/Gnu/autoconf-2.13/html_node/standards_8.html
答案 2 :(得分:2)
这是旧的K& R风格。等效的现代方法是:
int inet_pton(int af, const char *src, void *dst) {
...