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

Ykt*_*ula 2 c variables freebsd c99 c89

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

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

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

Joe*_*son 8

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

  • C99支持K&R风格的函数定义(它们已被弃用,但仍受支持). (4认同)

Kri*_*son 7

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

int foo(a, b)
    int a,
    int b
{
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

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