全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1956
推到 Plurk!
推到 Facebook!

關於 #include 真正的涵義

答題得分者是:syntax
istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-01-09 00:28:54 IP:122.123.xxx.xxx 訂閱
各位大大好:

小弟請教一個基本問題

假設我有三個.h檔


[code cpp]
Unit1.h
Unit2.h
number.h

[/code]

首先我先讓 Unit1.h #include "number.h"

我的問題是 今天我使用 Unit2.h #include "Unit1.h"

為何沒辦法直接使用 number.h 內的變數

因為如果 Unit1.h 和 Unit2.h 同時 #include"number.h"

程式會發出警告

我如果要讓 number.h 內的變數 可以讓 Unit1.h 和 Unit2.h 使用 我該怎麼宣告會比較好??

請各位賜教了!!
------
恩...
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-01-09 08:53:18 IP:59.125.xxx.xxx 訂閱
*.h 是用來宣告用的,對於 include 方,是告知外來,也就是 external,external 類的,直接導 link 
如果你在宣告時給定其直,就會變成「定義」,有就是建立本體,但一個變數,是無法建立兩個或以上的本體
宣告,可以宣告無數次,定義,只能有一次
如果你的 *.h 遵守這個原則,就不會發生你說的該狀況
如果要在 *.h 內定義,那不就跟 *.c 相同,又何必分 *.h *.c,都用 *.c 來完成,但這樣必須在每一個 *.c 檔案內做外部宣告
通常只用在小型程式,不需要為 *.h 而建立 *.h

int i; <--- 宣告

int i;
i = 10; <- 定義

int i = 10; <- 定義

如果檢查的嚴格,外部變數或許要用 extern,單看編譯器規則
extern int i;

沒記錯 extern int i = 10; 是不行的,不能定義外部來源 (這部分有點忘記)

建議你基礎的書,要看,同時要看早期的書 (圖書館很多),才有講,現在的書,都是 RAD 類的懶人用書

===================引 用 istillloving 文 章===================
各位大大好:

小弟請教一個基本問題

假設我有三個.h檔


[code cpp]
Unit1.h
Unit2.h
number.h

[/code]

首先我先讓 Unit1.h #include "number.h"

我的問題是 今天我使用 Unit2.h #include "Unit1.h"

為何沒辦法直接使用 number.h 內的變數

因為如果 Unit1.h 和 Unit2.h 同時 #include"number.h"

程式會發出警告

我如果要讓 number.h 內的變數 可以讓 Unit1.h 和 Unit2.h 使用 我該怎麼宣告會比較好??

請各位賜教了!!
編輯記錄
syntax 重新編輯於 2010-01-09 08:56:09, 註解 無‧
istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-01-09 10:11:39 IP:140.127.xxx.xxx 訂閱
非常感謝您的回答

C和C 深层探索(PDF)

http://www.myebook.cn/ebook/dnwl/cxsj/c/2008/058577418311.htm

解壓縮密碼要用手打

===================引 用 syntax 文 章===================
*.h 是用來宣告用的,對於 include 方,是告知外來,也就是 external,external 類的,直接導 link
如果你在宣告時給定其直,就會變成「定義」,有就是建立本體,但一個變數,是無法建立兩個或以上的本體
宣告,可以宣告無數次,定義,只能有一次
如果你的 *.h 遵守這個原則,就不會發生你說的該狀況
如果要在 *.h 內定義,那不就跟 *.c 相同,又何必分 *.h *.c,都用 *.c 來完成,但這樣必須在每一個 *.c 檔案內做外部宣告
通常只用在小型程式,不需要為 *.h 而建立 *.h

int i; <--- 宣告

int i;
i = 10; <- 定義

int i = 10; <- 定義

如果檢查的嚴格,外部變數或許要用 extern,單看編譯器規則
extern int i;

沒記錯 extern int i = 10; 是不行的,不能定義外部來源 (這部分有點忘記)

建議你基礎的書,要看,同時要看早期的書 (圖書館很多),才有講,現在的書,都是 RAD 類的懶人用書

===================引 用 istillloving 文 章===================
各位大大好:

小弟請教一個基本問題

假設我有三個.h檔


[code cpp]
Unit1.h
Unit2.h
number.h

[/code]

首先我先讓 Unit1.h #include "number.h"

我的問題是 今天我使用 Unit2.h #include "Unit1.h"

為何沒辦法直接使用 number.h 內的變數

因為如果 Unit1.h 和 Unit2.h 同時 #include"number.h"

程式會發出警告

我如果要讓 number.h 內的變數 可以讓 Unit1.h 和 Unit2.h 使用 我該怎麼宣告會比較好??

請各位賜教了!!
------
恩...
編輯記錄
istillloving 重新編輯於 2010-01-09 10:46:05, 註解 無‧
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-01-09 13:33:06 IP:59.125.xxx.xxx 訂閱
如果是要說書的話,這一本絕對值得一讀,細讀 C++primer_plus_fifth_edition.pdf 

google this "C primer_plus_fifth_edition.part1.rar"


不知道這連結還能撐多久

===================引 用 istillloving 文 章===================
非常感謝您的回答

C和C 深层探索(PDF)

http://www.myebook.cn/ebook/dnwl/cxsj/c/2008/058577418311.htm

解壓縮密碼要用手打

===================引 用 syntax 文 章===================
*.h 是用來宣告用的,對於 include 方,是告知外來,也就是 external,external 類的,直接導 link
如果你在宣告時給定其直,就會變成「定義」,有就是建立本體,但一個變數,是無法建立兩個或以上的本體
宣告,可以宣告無數次,定義,只能有一次
如果你的 *.h 遵守這個原則,就不會發生你說的該狀況
如果要在 *.h 內定義,那不就跟 *.c 相同,又何必分 *.h *.c,都用 *.c 來完成,但這樣必須在每一個 *.c 檔案內做外部宣告
通常只用在小型程式,不需要為 *.h 而建立 *.h

int i; <--- 宣告

int i;
i = 10; <- 定義

int i = 10; <- 定義

如果檢查的嚴格,外部變數或許要用 extern,單看編譯器規則
extern int i;

沒記錯 extern int i = 10; 是不行的,不能定義外部來源 (這部分有點忘記)

建議你基礎的書,要看,同時要看早期的書 (圖書館很多),才有講,現在的書,都是 RAD 類的懶人用書

===================引 用 istillloving 文 章===================
各位大大好:

小弟請教一個基本問題

假設我有三個.h檔


[code cpp]
Unit1.h
Unit2.h
number.h

[/code]

首先我先讓 Unit1.h #include "number.h"

我的問題是 今天我使用 Unit2.h #include "Unit1.h"

為何沒辦法直接使用 number.h 內的變數

因為如果 Unit1.h 和 Unit2.h 同時 #include"number.h"

程式會發出警告

我如果要讓 number.h 內的變數 可以讓 Unit1.h 和 Unit2.h 使用 我該怎麼宣告會比較好??

請各位賜教了!!
系統時間:2024-04-25 19:59:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!