让方法随处可用
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
放在那里。
我正在尝试用 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
放在那里。