C89:在引用函数之前需要声明函数吗?

时间:2010-02-23 02:00:37

标签: header c89

我是C89的新手,看来你必须在调用它之前声明一个函数。所以这是不可接受的:

void foo() {
    bar();
}

void bar() {
    // do stuff
}

因为bar()是在文件中foo()之后定义的。有没有办法解决这个问题?我需要头文件吗?

2 个答案:

答案 0 :(得分:2)

添加原型:

void bar(); // prototype for function bar() which is implemented later

void foo() {
    bar();
}

void bar() {
    // do stuff
}

对于具有多个源代码文件的项目,原型通常会放在头文件中并包含在多个源文件中;只需在单个源文件中指定实现。编译器只需要原型就能够执行正确的类型检查等。

答案 1 :(得分:0)

此外,如果不需要从文件外部调用函数(即,如果函数可以“静态”),那么您通常可以简单地在文件中对函数进行排序,以便编译器看到定义在使用函数之前的函数。