我正在阅读“C 中的编译器设计”一书。在基础部分中,我发现词法分析器的 ac 片段是这样的 -
static int Lookahead = -1;
int match(token)
int token;
{
if(Lookahead == -1)
Lookahead = lex();
return token == Lookahead;
}
void advance(){
Lookahead = lex();
}
我对这个 match 函数如何在 gnu gcc 上编译感到困惑。所以我写了一个看起来像的函数
int a(token)
int token;
{
printf("Value of token is %d", token);
}
int main()
{
printf("Hello world!\n");
a(1);
return 0;
}
我得到以下输出-
你好世界!代币价值为 1
但我不明白该函数声明背后的原因。以这种方式声明函数有什么好处?以及token的价值如何为1?为什么它不是编译错误?它是C中的某种函数声明吗?
感谢您检查我的问题。任何形式的帮助都会很棒。