C語言 原始檔 標頭檔案 c cc h 的使用

2021-10-24 17:19:32 字數 814 閱讀 5258

乙個函式包括定義與宣告,定義中包含了函式是如何實現的,宣告則闡明函式如何被呼叫。

工程上為了將個函式模組化,通常將宣告與定義分開,一般將主函式定義放在.c中,其他函式定義放在原始檔.cc中,函式宣告放在.h中。

.c 中包含主函式,並include所有使用到的標頭檔案;

.cc中包含其他函式定義,並include需要的.**件或需要的非本函式的宣告;【保證這個原始檔可以單獨編譯成功

如果不將函式的宣告與定義分開,將函式宣告和定義都放在.h中,那如果現在要增加乙個函式的宣告檔案2.c,這個新函式include其他標頭檔案1.h,那麼在編譯1.c和2.c時,1.h中的函式定義將在物件檔案**現兩次,報duplicated錯誤。

簡而言之,如果不分開,其他.c檔案可能只是想用一下前面函式的宣告,但確錯誤地一併引入函式定義,就會報錯。

.h中包含庫函式宣告,一些函式的宣告。

還有乙個問題,萬一.h中有函式定義,這時,如果重複包含標頭檔案,同樣會報duplicated錯誤,因為.h在預編譯時進行簡單替換,就會出現多個同樣的函式定義。

解決方法為條件編譯:

#ifndef _headers1_h

//未定義,執行如下操作,如有定義,則不執行

#define _headers1_h

//定義巨集..

.#endif

如果想讓自己的檔案變為尖角號而不是引號

#include

則需要用命令將當前目錄加到系統路徑中

g++ -i./

檔案 標頭檔案 原始檔(C )

標頭檔案和原始檔中的函式宣告與定義 函式原型 file fsopen const char filename,const char mode,int shflag file wfsopen const wchar t filename,const wchar t mode,int shflag 注 ...

C語言 原始檔和標頭檔案理解

簡單的說其實要理解c檔案與標頭檔案 即.h 有什麼不同之處,首先需要弄明白編譯器的工作過程,一般說來編譯器會做以下幾個過程 1.預處理階段 2.詞法與語法分析階段 3.編譯階段,首先編譯成純彙編語句,再將之彙編成跟cpu相關的二進位製碼,生成各個目標檔案 obj檔案 4.連線階段,將各個目標檔案中的...

c語言標頭檔案和原始檔 C語言標頭檔案防衛式宣告

c語言一般提供三種預處理功能 巨集處理 檔案包含 條件編譯。標頭檔案防衛式申明中會用到條件編譯中 ifndef define endif的用法。所以,首先價紹下條件編譯。一般情況下,在生成可執行檔案的過程中,源程式檔案中的所有 行都進行編譯,但是在一些跨作業系統的情況下,要求 既能在windows下...