徹底搞懂乙個專案中的各種檔案關係

2021-07-03 14:40:17 字數 748 閱讀 7420

乙個專案由很多檔案構成,很多.c檔案,和.h檔案。

.h檔案,只是標頭檔案中的包含的作用,就是copy。

編譯的時候,各個.c檔案分別進行編譯。

如果乙個.c檔案中的變數,使用之前是用extern修飾的,那麼表明這個變數不是本檔案中的,是別的檔案中的。extern 表示外部的意思,就是表明這個變數或者函式,不是本檔案中的,是其他.c檔案中的。各個.c檔案都編譯後,需要進行鏈結的。

重要的補充說明:

標頭檔案中不可以有可執行的**! 什麼叫可執行**,自己去google。

否則,如果標頭檔案中有可執行**,那麼如果標頭檔案被多個原始檔包含了,則會出現變數或者函式多重定義的問題(multidefine)。

什麼是不可執行**? 巨集、定義乙個結構體、typedef出一種型別、函式和變數的宣告、int i等都是不可執行**。但是int  i = 0 就是可執行**了。

乙個原始檔要用到另乙個原始檔的中的函式或者全域性變數,需要在用之前,用extern 表明這個函式或者變數不是本檔案中的,是其他檔案中的。可以把這些放在.h的標頭檔案中,但是奇妙的是,這個.h的標頭檔案可能也會被實現它的源**的檔案包含(include),那怎麼辦呢 ? 本來在實現它的源**檔案中是來實現它的,現在你又用extern來表明這個是其他檔案中的,這可如何是好? 

c primer plus第五版中文版第458頁說,這不會出現問題!原話是這麼說的:在源**檔案中包含想把源**定義的函式和變數extern的標頭檔案,主要宣告型別一致,那麼在同一檔案中使用定義宣告和引用宣告就不會出現問題!

專案中的乙個小指令碼

excel a裡是一大堆ip位址。excel b裡是ip位址所對應的實體地址。兩個檔案 excel a如下圖所示 excel b如下圖所示 需求 將excel a中的ip在excel b中找到對應的實體地址。那麼寫的思路是什麼樣的呢?剛開始想要操作excel,python裡也有針對excel操作的模...

AS將乙個專案匯入到另乙個專案中

需求 有專案a,b。需要將b整合到a中,作為a的乙個模組。方法 4.在a中project structure 中dependcies 裡新增對b的依賴,或者你自己在gradle檔案中配置也可以。5.在匯入的bmodule中,找到其androidmanifest.xml檔案,刪除原本的啟動頁的配置,因...

乙個專案如何引用另乙個專案中類中的方法

這裡可能有多種方法,但是由於我是新手,暫且只會一種方法。由於我用的是m en來匯入另乙個專案。所以如果沒用到m en的同學看到了我的這句話,基本上就可以不用往下看了 首先當建立乙個m en專案的時候,我們的pom.xml總會有一些對該項目的描述。而我們的pom.xml中也有dependency來匯入...