2

在阅读一些 FreeBSD 源代码时(参见:radix.h第 158-173行),我发现在定义中的“函数标题”之后的变量声明。

这在 ISO C (C99) 中有效吗?什么时候应该在生产代码中完成,而不仅仅是在“函数标题”中声明变量?为什么要在这里完成?

我指的是标题字符串的函数,如下所示:int someFunction(int i, int b) {

4

3 回答 3

8

这看起来像 K&R (pre-ANSI) 风格。我认为它不是有效的 C99,但他们使用的是 C99 吗?乔尔

于 2010-04-13T23:02:29.270 回答
7

我认为您指的是在 C 中声明参数的“老式”pre-ANSI 方式。它看起来像这样:

int foo(a, b)
    int a,
    int b
{
    /* ... */
}

这在 C99 中可能仍然有效,并且出于向后兼容的原因将被编译器接受,但应将其视为已弃用/过时。

于 2010-04-13T23:04:47.180 回答
0

呃。也许我误解了你的问题,但是ib那个片段中是函数的参数。这不是在函数中声明变量的紧凑方式,例如:

int someFunction() {
    int i, b;

当您调用 时someFunction,您将这些参数传递给它:

someFunction(1, 2); // `i` will be `1` and `b` `2` within `someFunction`
于 2010-04-13T23:01:43.243 回答