[問題] 已經加入不重複include的判斷 但卻還是重複宣告global_var?

看板C_and_CPP (C/C++)作者 (愛與和平)時間15年前 (2010/08/21 23:04), 編輯推噓0(0011)
留言11則, 7人參與, 最新討論串1/1
請教一下 純C語言 於head file(如下)已經加入判斷 來避免重複include狀況 ---------------------------- #ifndef _MAIN_H_ #define _MAIN_H_ #include <stdio.h> #include <stdlib.h> int global_var; #endif ----------------------------- 那麼我的source file(A.cpp & B.cpp)都去include main.h 編譯卻依舊發生global_var重複宣告的問題 !! @@ 請問全域變數一定要寫在source file內嗎? 另一支再用extern方式參照到它... 我有看過網路資料 編譯器於編譯階段 似乎也是把include head file的內容貼到source file最上頭 再編譯 不知道這觀念是否正確 @@? 謝謝 -- 推 hitsuji611:我前兩天跟朋友去看殺人犯 售票員: 殺人犯兩位是嗎 07/15 00:33 → hitsuji611:我不是殺人犯阿~~~ 07/15 00:33 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.226.67

08/21 23:09, , 1F
在 header 放的就該 extern
08/21 23:09, 1F

08/21 23:10, , 2F
include 的行為如同你描述的一樣
08/21 23:10, 2F

08/22 01:19, , 3F
include guard 不是這樣用的...
08/22 01:19, 3F

08/22 01:20, , 4F
#ifndef 是避免同一個.h檔不小心被同一個.c檔重覆引入
08/22 01:20, 4F

08/22 07:57, , 5F
....這東西對新手來說還真是一個微妙的盲點。
08/22 07:57, 5F

08/22 10:20, , 6F
請教 那我要如何實驗全域變數宣告部分呢 真的用extern?
08/22 10:20, 6F

08/22 10:39, , 7F
header file 都用 extern 「宣告」, 然後選一個 c 檔
08/22 10:39, 7F

08/22 10:39, , 8F
先學會如何區分宣告和定義,然後把宣告和定義放在適當位置
08/22 10:39, 8F

08/22 10:39, , 9F
,不要都用實驗的,教科書都有。
08/22 10:39, 9F

08/22 10:40, , 10F
去「定義」, 執行時再連結起來
08/22 10:40, 10F

08/22 12:19, , 11F
連結時期由連結器解決懸置符號
08/22 12:19, 11F
文章代碼(AID): #1CR-iNAM (C_and_CPP)
文章代碼(AID): #1CR-iNAM (C_and_CPP)