傳統C語言中,定義結構體的標準語法是:
- struct tagXX
- {
- };
- struct tagXX a;
- tagXX a; /* 編譯錯誤!定義結構的實例時必須用struct關鍵字 */
typedef作用是給類創建一個【別名】,下面是你給的代碼:
- typedef struct tagXX
- {
- } XX;
- struct tagXX
- {
- };
- typedef struct tagXX XX;
然後你可以用XX來定義變量:
- XX a; /*相當於struct tagXX a; */
實際上定義結構體時使用typedef的話,完全可以在創建別名的同時不給結構體命名:
- typedef struct
- {
- } XX;
- XX a;
你甚至可以本名和別名都不要,直接用結構體定義一個實例:
- struct
- {
- } a;
【C++】
C++裏,用結構定義實例已經不需要struct關鍵字,例如:
- struct tagXX {};
- tagXX a; //C++裏沒有問題
- struct tagXX b; //兼容C,也沒有問題
所以,在C++裏定義結構體的同時已經不再需要用typedef創建別名。