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