我正在使用Bison创建一个简单的解析器,并且在理解下面的C代码时遇到了一些麻烦。对我来说,它看起来不像是一条有效的语句,但是gcc巧妙地对其进行了编译,并且该块中的代码在解析错误时执行。

我真的很想知道这实际上意味着什么。

我引用的代码来自http://dinosaur.compilertools.net/bison/bison_7.html#SEC66:

yyerror (s)
     char *s;
{
  // Some code here
}

最佳答案

那是K&R C

在现代C语言(C89/90或C99)中,它将是:

int yyerror(char *s)
{
}

关于c - Bison中奇怪的C代码(yyerror),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8402039/

10-12 16:09