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

时间:2013-02-28 19:03:04

标签: c

这段代码是什么意思?具体来说,花括号在做什么?他们不在功能中。

yyerror(s) char * s;

{
    fputs(s,stderr), putc('\n',stderr);
}

2 个答案:

答案 0 :(得分:10)

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

int yyerror(char *s)
{
    fputs(s,stderr), putc('\n',stderr);
}

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

int yyerror(char *s)
{
    fputs(s,stderr);
    putc('\n',stderr);
}

请注意,默认情况下,假定此函数返回int,因为未指定返回类型,但该函数不包含return语句。这意味着你不应该在程序的任何地方依赖这个函数的返回值。

答案 1 :(得分:2)

旧式函数声明。

然后在函数体中:

fputs(s,stderr), putc('\n',stderr);

相当于

fputs(s,stderr); putc('\n',stderr);