這個問題好久前就知道了,但是這次出現竟然糊塗了半小時,特此記錄增強記憶。
在VC6中,如果是cpp後綴名那麼是沒有問題的,但是如果後綴名爲c,那麼就會出現 error C2081 等錯誤,意思就是 S 沒有定義等。
應該寫成下面的定義方式
看看微軟寫的就知道了
struct S {
int a, b;
} s_instance;
也可以
typedef struct {
int a, b;
} S;
S s_instance;
注意:前者struct S {} 是一個類型,中間的S是一個tag,所以只能用1次。
後者typedef把struct {} 定義爲類型S,所以S可以多用。
//////////////////////////////////////////////////////////////////////////
因爲自己一直使用C++,習慣於下面的方式定義 structstruct S{
//
};
在VC6中,如果是cpp後綴名那麼是沒有問題的,但是如果後綴名爲c,那麼就會出現 error C2081 等錯誤,意思就是 S 沒有定義等。
應該寫成下面的定義方式
typedef struct tagS{
//
}S;
看看微軟寫的就知道了
typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;# re: struct 定義在C++與C中的區別(VC6編譯器)
在C裏面,你可以struct S {
int a, b;
} s_instance;
也可以
typedef struct {
int a, b;
} S;
S s_instance;
注意:前者struct S {} 是一個類型,中間的S是一個tag,所以只能用1次。
後者typedef把struct {} 定義爲類型S,所以S可以多用。