定义中函数标题后的C变量声明

时间:2010-04-13 22:59:38

标签: c variables freebsd c99 c89

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

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

我指的是标题为这样的字符串的函数:int someFunction(int i, int b) {

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:7)

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

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

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

答案 2 :(得分:0)

尔。也许我误解了你的问题,但该片段中的ib是该函数的参数。它不是在函数中声明变量的一种紧凑方式,如:

int someFunction() {
    int i, b;

当你致电someFunction时,你会传递这些参数:

someFunction(1, 2); // `i` will be `1` and `b` `2` within `someFunction`