让方法随处可用

Make methods available everywhere

我正在尝试用 C 语言编写递归下降解析器,但我的方法存在以下可用性问题,因为 C 使用自上而下的编译器:

void a(){
    b();
}
void b(){
    c();
}
void c(){
    a();
}

如何解决这个问题,以便在需要时调用所有方法?我想不出一个优雅的解决方案,因为我是 C 的新手。

这通常可以通过函数原型来解决:

void a(void);
void b(void);
void c(void);
//^function prototypes

void a(void){
    b();
}
void b(void){
    c();
}
void c(void){
    a();
}

您也可以使用旧式声明(没有括号中的 void) 这会将函数声明为采用未指定数量的提升参数,但这些参数已被弃用,它们会导致弱类型检查和稍差的代码生成,因此如果函数不带参数,最好将 void 放在那里。