看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) error C2275: 'MyStruct' : 將此型別當做運算式的使用方式不合法 寫 .cpp 寫習慣了,可能養成了不好的習慣, 對於 struct 之宣告及 typedef 現在變得很亂。 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC2008 有問題的code: (請善用置底文標色功能) (1) typedef struct _Node{ struct _Node* next; int key; }Node; typedef struct _Node* pNode; (2) struct _Node{ struct _Node* next; int key; }; typedef struct _Node Node; typedef struct _Node* pNode; (3) // justdemon 提供 typedef struct _Node{ struct _Node* next; int key; } Node, *pNode; (4) // madoka82 提供 typedef struct { struct Node* next; int key }Node; typedef Node* pNode; // ====================================== // travel void travel(pNode head) { /* if(head==NULL) { printf("(NULL)"); return; }*/ // 加這段 comment 不能執行,沒有這段可執行。 pNode tmp = head; while(tmp!=NULL){ printf("%d ", tmp->key); tmp = tmp->next; } } 這二種寫法都有問題, 日後函數用 pNode 後,竟會出現 C2275 之 error, 副檔名為 .c 之情形下,應如何宣告、typedef 才能避開這種錯? 若先進認為資訊不足, 我再 po 上原始碼為佳 謝謝各位指教! -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.142 ※ 編輯: tropical72 來自: 180.177.76.142 (11/20 11:52) ※ 編輯: tropical72 來自: 180.177.76.142 (11/20 11:53)
peefly:(1)的大括號結尾"struce"打錯字? 11/20 11:56
madoka82:C++ 跟 C 的 struct 宣告真的不太一樣 之前也是用 gcc 編 11/20 12:01
madoka82:譯 .c 沒問題丟去 VC 編不過...但是我鴕鳥 換編譯器編... 11/20 12:02
justdemon:typedef struct _Node{} Node, *pNode; 11/20 12:15
tropical72:回p大,抱歉,那真的是key錯. 11/20 12:25
tropical72:原碼和錯誤訊息: http://nopaste.csie.org/190d9 11/20 12:25
tropical72:回 j 大,一樣不過 = = 11/20 12:27
謝謝 justdemo 與 madoka82 協助, 目前還是過不去, 仍在努力中.. (第一次有 try 不出來,想怪 complier 的衝動 XD) ※ 編輯: tropical72 來自: 180.177.76.142 (11/20 12:31) ※ 編輯: tropical72 來自: 180.177.76.142 (11/20 12:31)
purpose:http://codepad.org/I8OFxy22 11/20 12:37
purpose:http://ppt.cc/K4;3 11/20 12:38
tropical72:p 大好神!!!!不過我還是不知道到底發生什麼事了 = = 11/20 12:39
tropical72:Dev 會過, GCC 會過, VC 竟然不過.. 11/20 12:40
tropical72:vc2008 不支援C99,那C89/C90/C98 可支援到哪 ? 11/20 12:52
purpose:VC有自己的一套,不過記得從2003還是2005開始,有向標準 11/20 12:53
purpose:靠齊,比較守規矩,所以 VC6 常被說爛就是這樣 11/20 12:54
purpose:C99的話,VC真的不太鳥 11/20 12:55
tropical72:感謝p大指教!!這個我自己抓都不知道抓到什麼時候 XD 11/20 12:56
madoka82:(memo) 學到寶貴的 編譯器相關資訊... 謝謝 p 桑 11/20 12:57
purpose:說到上文提的goto,其實微軟的_beginthread()這個關鍵函數 11/20 13:04
purpose:就是用goto做例外處理的典型例子。 11/20 13:05
tropical72:真想請版主把這篇收到精華區... XD 11/20 13:06