1. 程式人生 > >c/c++ _c語言模組_標頭檔案_原始檔_標頭檔案搜尋路徑

c/c++ _c語言模組_標頭檔案_原始檔_標頭檔案搜尋路徑

標頭檔案

  • 為什麼會有標頭檔案;
  • 怎麼製作標頭檔案;
  • 我們的編譯器是怎麼找到標頭檔案;
  • 模組:有組織有結構的來給程式碼劃分模組,處理同一個功能程式碼,我們放到一個模組裡面,.c檔案

假設我們新增一個數學函式原始檔,並且新增到編輯器
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

程式碼模組的原則:

  • 如果這個函式介面,可以公開給外部使用,那麼就要把這個函式的宣告編寫到標頭檔案
  • 如果這個函式介面,不給外部使用,那麼一定不要把這個函式宣告放到標頭檔案
  • 注意在編寫標頭檔案的時候為了方便維護,一般使用和模組的.c檔案同名的.h檔案,或有意義的名字

製作標頭檔案

  • 怎麼來製作檔案
  • 防止重複包含

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

當我們要使用這個模組的介面的時候;
我們可以包含這個介面標頭檔案;

這裡寫圖片描述

防止重複包含的格式

這裡寫圖片描述

  • 防止標頭檔案包含的巨集 的格式
  • 檔名_H 裡面所有的字母都是大寫的;

這裡寫圖片描述

能夠節省編譯器編譯程式所需要的時間

標頭檔案搜尋路徑

編譯器是怎麼找到我們的標頭檔案

  • 1:#include ""是在工程專案裡面來搜尋標頭檔案,./,../;
  • ./:當前編譯的.c 所在的資料夾的位置開始搜尋;
  • 指當前main.c 檔案當前所在的資料夾位置
  • 這裡寫圖片描述
  • ../:上一層資料夾;

這裡寫圖片描述
當前資料夾的下一級查搜尋

這裡寫圖片描述

如果找不到就會到編譯器自帶的標頭檔案目錄下去搜索

這裡寫圖片描述
如果再找不到回到使用者自定義的標頭檔案搜尋路徑去查詢;

這裡寫圖片描述

這裡寫圖片描述

  • 2: #include <>
    • 會去編譯器的自帶標頭檔案目錄下去查詢
    • 會到使用者自定義的標頭檔案搜尋路徑去查詢
  • -

這裡寫圖片描述

什麼情況下使用<>,什麼情況下使用” “

  • 1 如果是系統標頭檔案,string.h,stdlib.h等,使用<>
  • 2 如果是獨立的第三方模組安裝的 <>比如 mysql.h
  • 如果是自己專案的標頭檔案,一定使用” “
  • 為什麼不全部使用”“,而還要混合<>來尋找呢??
    • 加快編譯器搜尋標頭檔案的速度;
    • 方便我們維護,<>我們知道這個程式碼模組是來自第三方,或系統庫,或外部

extern

宣告我們有一個外部模組定義了這個全域性變數

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

隱藏的問題,vc全域性變數不加型別也能編譯過,當做整數

這裡寫圖片描述

程式碼模組

這裡寫圖片描述