定义被调函数的位置的问题

img


这句话为什么是错的,为什么?谢谢大家指点正文长度小于30个字符,请进行修改

在 C 语言中,如果你想在一个函数内调用另一个函数,那么这个被调函数的函数声明(也称作函数原型)必须出现在调用它的函数之前。这是因为在编译期间,编译器需要知道被调函数的参数类型和返回类型,以便能够正确地生成调用代码。

然而,被调函数的定义部分(也就是函数体)可以放在调用函数之后。这是因为在编译期间,编译器会先读取整个程序文件,并将函数声明和函数定义的信息存储在内存中。所以,在编译器看到调用函数时,它已经知道了被调函数的函数声明,因此可以生成正确的调用代码。

举个例子,下面的代码是合法的:

// 函数声明
int add(int x, int y);

int main() {
  // 调用函数
  int result = add(1, 2);
  return 0;
}

// 函数定义
int add(int x, int y) {
  return x + y;
}

但是,如果将函数声明和函数定义的顺序颠倒,编译器就会报错.

这是错的啊,只需要函数申明在上方就可以了,定义部分没有要求

如果这句话是对的,那递归根本没法发生,使用函数的地方函数的定义还没完事呢
同样的,如果两个函数A,B,A要调用B,B也要调用A,这种变种递归也根本没法发生,因为A和B总有一个要在后面,如果前面的没法调用后面的那代码根本没法执行
实际上,如果A在B的前面,B调用A的时候不用声明,A调用B的时候事先声明即可