2014-04-27 43 views
-1
typedef struct { 
    char unit1[3]; // unit1 has value ns 
    char unit2[3]; // unit2 has value ns 
    char unit3[3]; // unit3 has value ns 
} unit; 

unit u; 

我有一個全局結構,它有3個大小爲3的字符數組,它的值爲「ns \ 0」。空終止因此大小3.指針中的錯誤

/* This function checks if all has same unit */ 
int check_conversion_unit() { 
    if ((u.unit1[0] == u.unit2[0]) && (u.unit2[0] == u.unit3[0]))  // ERROR HERE 
     return 1; 
    else 
     return 0; 

} 

其他一些函數調用此函數來檢查是否所有單位具有相同的大小,然後再進行計算。但是,當我嘗試編譯這段代碼,我得到一個錯誤如下:

error: subscripted value is neither array nor pointer nor vector 
error: subscripted value is neither array nor pointer nor vector 
error: subscripted value is neither array nor pointer nor vector 
+2

你忘了'typedef'嗎? –

+1

'if'缺少支架 – GoldRoger

+0

不,這是錯字,而輸入問題 – user2737926

回答

2

你忘在這裏)

if ((u.unit1[0] == u.unit2[0]) && (u.unit2[0] == u.unit3[0])) 
//               ^
//               | that's one 
+0

不)這是打字時輸入問題。謝謝 – user2737926

+0

對不起,但它是我重新格式化代碼時看到的第一個。也許你可以直接發佈你的代碼。正如我看到你的帖子中有很多錯別字錯誤。 – Alexei

1

你的問題是錯誤的struct聲明..

它應該是這樣的

struct unit { 
    char unit1[3]; // unit1 has value ns 
    char unit2[3]; // unit2 has value ns 
    char unit3[3]; // unit3 has value ns 
}; 

然後你必須declar e like this

struct unit u;

或者,如果你想的typedef,

typedef struct { 
    char unit1[3]; // unit1 has value ns 
    char unit2[3]; // unit2 has value ns 
    char unit3[3]; // unit3 has value ns 
} unit; 

然後你就可以直接使用它

單元u;

+0

不是這個..它是輸入問題時輸入錯誤。謝謝 – user2737926