2

可能重复:
C 函数语法,在参数列表之后声明的参数类型

我浏览了一些 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 技巧吗?您是否可以始终在其范围内定义函数的参数类型?

4

3 回答 3

5

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

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

于 2013-01-29T12:59:39.653 回答
3

Pre ANSI C 样式代码,请参见此处: http ://sunsite.ualberta.ca/Documentation/Gnu/autoconf-2.13/html_node/standards_8.html

于 2013-01-29T13:00:03.023 回答
2

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

int inet_pton(int af, const char *src,    void *dst) {
...
于 2013-01-29T13:00:40.303 回答