で働いていないSTRUCT:機能typedefが、私はタイプstructのtypedefをを使用してタイプを定義したVS2015
// Create a new number type lval
lval lval_num(long x)
{
lval v;
v.type = LVAL_NUM;
v.num = x;
return v;
}
しかし、Visual Studioの2015年、それをコンパイルしない、ちょうどこの二つ、エラーが表示されない:
Error C2143 syntax error: missing ';' before '{'
Error C2065 'x': undeclared identifier
誰でもバグ/エラーを見つけられますか?私はグーグルと他の回避策を試して何も働かなかった。
// Create enumerations of possible lval struct types
enum { LVAL_NUM, LVAL_ERR };
// Create enumerations of possible lval error types.
enum { LERR_DIV_ZERO, LERR_BAD_OP, LERR_BAD_NUM };
// Declate a new struct LVAL
typedef struct {
int type;
long num;
int err;
} lval;
// Create a new number type lval
lval lval_num(long x)
{
lval v;
v.type = LVAL_NUM;
v.num = x;
return v;
}
私もこのように関数を宣言しようとしたがうまくいきませんでした:
struct lval lval_num(long x)
{
lval v;
v.type = LVAL_NUM;
v.num = x;
return v;
}
EDIT:これがないWindows上ではなく、GCCを使用してLinuxに取り組んでいる( はここで完全なコードスニペットですVS2015) ここは簡単です。 Code Snippet
1.一度 'typedef'edを' struct'する必要はありません。 2.ライン#160はどちらのラインですか? 3.関数を削除(コメント)するとエラーが消えますか? 4. 'c.type = LVAL_NUM;'行にコメントするとうまくいきますか? –
これは行番号160です。 'v.num = x;' –
enumsの前には何かありますか?いくつかのヘッダファイルが含まれていますか?私は標準が含まれていないことを意味する。 – LPs