「Compiler Design in C」という本を読んでいました。基本セクションで、このようなレクサーのacスニペットを見つけました-
static int Lookahead = -1;
int match(token)
int token;
{
if(Lookahead == -1)
Lookahead = lex();
return token == Lookahead;
}
void advance(){
Lookahead = lex();
}
この一致関数が 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 です
しかし、その関数宣言の背後にある理由がわかりません。このように関数を宣言する利点は何ですか? そして、どのようにトークンの値が 1 になるのでしょうか? コンパイルエラーではないのはなぜですか?Cの関数宣言のようなものですか?
私の質問をチェックしてくれてありがとう。どんな種類の助けも素晴らしいでしょう。