工作我定義使用的typedef類型結構的一個類型:功能的返回類型typedef結構未在VS2015
// Declate a new struct LVAL
typedef struct {
int type;
long num;
int err;
} lval;
,然後試圖使用返回類型lval中(如上所述使用的typedef創建)聲明函數:
// 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;
}
編輯:這是工作在Linux上使用GCC,但Windows( VS2015) 儘管如此, Code Snippet
1.你不需要'結構'一次typedef'ed。 2.哪一行是#160行? 3.刪除(註釋)功能後,錯誤消失了嗎? 4.如果你註釋行'c.type = LVAL_NUM;''它會起作用嗎? –
這是行#160 'v.num = x;' –
在枚舉之前有什麼東西嗎?是否包含一些頭文件?我的意思是沒有標準包含。 – LPs