[請問] VC2008 Struct 在標頭檔定義的問題...

看板C_and_CPP作者 (惡水上的大橋)時間15年前 (2010/11/01 23:58), 編輯推噓3(3013)
留言16則, 4人參與, 最新討論串1/1
※ [本文轉錄自 ask 看板 #1CpkCSWw ] 作者: madoka82 (惡水上的大橋) 站內: ask 標題: [請問] VC2008 Struct 在標頭檔定義的問題... 時間: Mon Nov 1 23:56:09 2010 作業環境是 Visual Studio 2008 我心血來潮把以前用 C 寫的東西想要丟去 2008 建專案 主要是有在某個自訂標頭檔裡頭寫了 struct 定義如下 list.h typedef struct { char data[128]; struct node *next; }node; 其他還有眾多 .c 檔都有 include 到這個標頭檔。 建置一直不給我過... 錯誤訊息 'node' : 重複定義; 基本型別不相同 我用 gcc 可以快樂的 compile and link 還想請教一下,在不換編譯環境的前提下,我該怎麼做來解決這個問題呢? 我有在專案一開起來預設的 stdafx.h 檔裡頭加了 #include "list.h" 但是還是不行... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.150.207 ※ 編輯: madoka82 來自: 114.25.150.207 (11/01 23:58)

11/01 23:58, , 1F
#ifndef NODE_H #define NODE_H #endif
11/01 23:58, 1F

11/02 00:01, , 2F
關鍵字「include guard」
11/02 00:01, 2F

11/02 00:02, , 3F
include guard 嗎... 我這個 .h 已經有包起來了說
11/02 00:02, 3F

11/02 00:02, , 4F
還是不過呀... 全包, 跟包 typedef 那段都試過了...
11/02 00:02, 4F

11/02 00:03, , 5F
struct node 和 typedef struct {} node 這兩個 node 不同喔
11/02 00:03, 5F

11/02 00:03, , 6F
(看你寫的是 C 語言)
11/02 00:03, 6F

11/02 00:03, , 7F
把 typedef 弄掉, C++ 不需要這樣來簡化類名
11/02 00:03, 7F

11/02 00:03, , 8F
你應該要寫 typedef struct node {} node; 才行
11/02 00:03, 8F

11/02 00:09, , 9F
"C++ 不需要這樣來簡化類名" -> 所以不加 typedef 直接可
11/02 00:09, 9F

11/02 00:10, , 10F
用 struct 名稱宣告變數 不需要 struct 就可以的意思嗎?
11/02 00:10, 10F

11/02 00:16, , 11F
雖然我在猜可能是哪邊程式碼有問題, 讓你宣告的地方變
11/02 00:16, 11F

11/02 00:17, , 12F
成定義
11/02 00:17, 12F

11/02 00:22, , 13F
基本上以上兩種方法目前都還是 compile 不過的...不過還
11/02 00:22, 13F

11/02 00:23, , 14F
是感謝以上兩位的意見,我想我暫時拿其他 Compiler 編譯就
11/02 00:23, 14F

11/02 00:23, , 15F
好... 謝謝
11/02 00:23, 15F

11/02 00:25, , 16F
顆顆...
11/02 00:25, 16F
文章代碼(AID): #1CpkED-U (C_and_CPP)