在阅读一些 FreeBSD 源代码时(参见:radix.h第 158-173行),我发现在定义中的“函数标题”之后的变量声明。
这在 ISO C (C99) 中有效吗?什么时候应该在生产代码中完成,而不仅仅是在“函数标题”中声明变量?为什么要在这里完成?
我指的是标题字符串的函数,如下所示:int someFunction(int i, int b) {
这看起来像 K&R (pre-ANSI) 风格。我认为它不是有效的 C99,但他们使用的是 C99 吗?乔尔
我认为您指的是在 C 中声明参数的“老式”pre-ANSI 方式。它看起来像这样:
int foo(a, b)
int a,
int b
{
/* ... */
}
这在 C99 中可能仍然有效,并且出于向后兼容的原因将被编译器接受,但应将其视为已弃用/过时。
呃。也许我误解了你的问题,但是i
在b
那个片段中是函数的参数。这不是在函数中声明变量的紧凑方式,例如:
int someFunction() {
int i, b;
当您调用 时someFunction
,您将这些参数传递给它:
someFunction(1, 2); // `i` will be `1` and `b` `2` within `someFunction`