C語言標頭檔案

2021-08-14 21:02:30 字數 1205 閱讀 2259

標頭檔案結構

標頭檔案一般由3部分組成

1.標頭檔案的開頭版本和版權的宣告

2.預處理塊

3.函式和類結構的宣告

question1:#include和#include「a.h」有什麼區別?

#include引用的是標準庫的標頭檔案,也就是說編譯器是從標準庫進行開始搜尋,而#include」a.h」則是屬於非標準庫的標頭檔案,簡單的說就是使用者自己建立的標頭檔案,以此格式進行包含,編譯器就會直接從使用者的工作目錄開始搜素;對二者進行明確的區分,從而提公升編譯的效率!

question2:ifndef/define/endif如何起到防止檔案被重複引用的?

預編譯的概念:預編譯是指對源程式進行編譯之前,先對原始碼中的編譯預處理命令進行處理,然後再將處理的結果和源程式一起進行編譯,得到目標**。

標頭檔案中一般放入的是函式的宣告、變數的宣告、結構體等等,乙個函式的宣告可以有多個,但是定義只能有乙個(什麼是函式的定義,大白話說就是構成你的函式的那個整體**),定義若是有多個就會導致編譯不通過。

重複引用的意思是指,在乙個.c(.cpp)檔案中乙個標頭檔案被引用了多次,舉乙個簡單的例子:現在有三個檔案,a.h,b.c,c.h,其中a.h中包含c.h,而b.c檔案在呼叫的時候同時包含a.h,c.h,這樣就導致了檔案的重複包含,同樣的在一些小的工程專案中,檔案的重複包含是沒有什麼影響的,但是在工業級的專案中是不允許這種低階錯誤發生的。

ifndef,define,endif,起的作用,從單詞的字面意思是指如果沒有定義某乙個標頭檔案,對該標頭檔案進行定義,然後是結束。就拿剛剛a.h,b.c,c.h來書,編譯器在對b.c進行預編譯的時候,對a.h,c.h進行預編譯,預編譯過後,發現在a.h中已經包含了c.h,這樣的話編譯器在處理c.h的時候,就會告訴它,我已經存在啦,不用在包含進來啦。通過這個方式可以實現檔案的重複引用,提公升編譯的效率。

#ifndef _a_h

#define _a_h 

//引用標頭檔案

#include

#include

#include "c.h"

// 函式宣告

void function1(...)

void function2(...)

void function2(...)

// 其它的的定義

c語言標頭檔案

c語言標頭檔案 每個c c程式通常分為兩個檔案。乙個檔案用於儲存 程式的宣告 declaration 稱為標頭檔案。另乙個檔案用於儲存 程式的實現 implementation 稱為定義 definition 檔案。c c程式的標頭檔案以 h 為字尾,c程式的定義檔案以 c 為字尾,c 程式的定義檔...

C語言標頭檔案

早期的程式語言如 basic fortran 沒有標頭檔案的概念,c c 語言的初學者雖然會 用使用標頭檔案,但常常不明其理。這裡對頭檔案的作用略作解釋 1 通過標頭檔案來呼叫庫功能。在很多場合,源 不便 或不准 向使用者公布,只要向使用者提供標頭檔案和二進位制的庫即可。使用者只需要按照標頭檔案中的...

C語言標頭檔案

件一般放宣告,是不放具體函式的 為了防止標頭檔案被重複包含,標頭檔案的編寫需要符合一定的格式,比如在開頭利用某巨集是否被定義來判斷是否要包含該標頭檔案。假設有一頭檔案叫example.h,它的編寫格式如下 ifndef example h define example h 函式宣告 endif於此同...