什么是 int foo(a) int a; { return a } 在 C 中是什么意思?
What does int foo(a) int a; { return a } mean in C?
在调查 function declarations 时,我遇到了一种奇怪的(对我来说)函数定义方式:
int f(void); // declaration: takes no parameters
int g(); // declaration: takes unknown parameters
int main(void) {
f(1); // compile-time error
g(2); // undefined behavior
}
int f(void) { return 1; } // actual definition
int g(a,b,c,d) int a,b,c,d; { return 2; } // actual definition
最后一行完全让我困惑。 int g(a,b,c,d) int a,b,c,d; { return 2; }
是什么意思?
这样的问题可能已经有人问过了,但我不知道如何组成一个搜索查询。
g
的定义使用指定参数类型的旧 K&R 方法。
而不是在 (
和 )
中指定参数及其类型,只指定名称,然后指定参数的类型,然后指定函数体。
这种声明参数的方式已被弃用,不应再使用,因为除其他原因外,它也不符合函数原型的条件。
在调查 function declarations 时,我遇到了一种奇怪的(对我来说)函数定义方式:
int f(void); // declaration: takes no parameters
int g(); // declaration: takes unknown parameters
int main(void) {
f(1); // compile-time error
g(2); // undefined behavior
}
int f(void) { return 1; } // actual definition
int g(a,b,c,d) int a,b,c,d; { return 2; } // actual definition
最后一行完全让我困惑。 int g(a,b,c,d) int a,b,c,d; { return 2; }
是什么意思?
这样的问题可能已经有人问过了,但我不知道如何组成一个搜索查询。
g
的定义使用指定参数类型的旧 K&R 方法。
而不是在 (
和 )
中指定参数及其类型,只指定名称,然后指定参数的类型,然后指定函数体。
这种声明参数的方式已被弃用,不应再使用,因为除其他原因外,它也不符合函数原型的条件。