什么是代码块,显然没有在.c文件上做什么?

Lay*_*lez 1 c

这段代码意味着什么?具体来说,花括号在做什么?它们不在功能中.

yyerror(s) char * s;

{
    fputs(s,stderr), putc('\n',stderr);
}
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 10

这看起来像K&R语法.在标准C中,它看起来像:

int yyerror(char *s)
{
    fputs(s,stderr), putc('\n',stderr);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,函数体中的逗号运算符实际上也是无操作符.您可以使用分号轻松替换它,并获得更熟悉的外观(和等效)代码:

int yyerror(char *s)
{
    fputs(s,stderr);
    putc('\n',stderr);
}
Run Code Online (Sandbox Code Playgroud)

请注意,默认情况下,假定此函数返回,int因为未指定返回类型,但该函数不包含return语句.这意味着您不应该依赖程序中任何位置的此函数的返回值.