このコードはどういう意味ですか? 具体的には、中括弧は何をしているのでしょうか? 彼らは機能の途中ではありません。
yyerror(s) char * s;
{
fputs(s,stderr), putc('\n',stderr);
}
このコードはどういう意味ですか? 具体的には、中括弧は何をしているのでしょうか? 彼らは機能の途中ではありません。
yyerror(s) char * s;
{
fputs(s,stderr), putc('\n',stderr);
}
これは 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
ください。つまり、プログラムのどこでも、この関数の戻り値に依存するべきではありません。
古いスタイルの関数宣言。
次に、関数本体で:
fputs(s,stderr), putc('\n',stderr);
と同等です
fputs(s,stderr); putc('\n',stderr);