filec語言頭文件
Ⅰ 如何製作c語言頭文件
方法和詳細的操作步驟如下:
1、第一步,頭文件被構建為在c文件中聲明函數,並包括宏定義, 必須有相應的c文件才能創建頭文件,見下圖,轉到下面的步驟。
Ⅱ c語言中頭文件和源文件一定要在同一個文件夾裡面嗎
c語言中頭文件和源文件可以不在同1個文件夾,在引用的時候加入頭文件的絕對路徑就可以。
系統自帶的頭文件,用<>包含;
自定義的頭文件,用""包含;
C程序的頭文件以「.h」為後綴。以下是假設名稱為graphics.h的頭文件:
#ifndefGRAPHICS_H//作用:防止graphics.h被重復引用
#defineGRAPHICS_H
#include<....>//引用標准庫的頭文件
...
#include"..."//引用非標准庫的頭文件
...
voidFunction1(...);//全局函數聲明
...
inline();//inline函數的定義
...
classBox//作用:類結構聲明
{
...
};
#endif
(2)filec語言頭文件擴展閱讀
c語言中頭文件使用原理
在程序中要使用頭文件,需要使用C預處理指令#include來引用它。前面我們已經看過stdio.h頭文件,它是編譯器自帶的頭文件。
引用頭文件相當於復制頭文件的內容,但是我們不會直接在源文件中復制頭文件的內容,因為這么做很容易出錯,特別在程序是由多個源文件組成的時候。
AsimplepracticeinC或C++程序中,建議把所有的常量、宏、系統全局變數和函數原型寫在頭文件中,在需要的時候隨時引用這些頭文件。
引用頭文件的語法
使用預處理指令#include可以引用用戶和系統頭文件。它的形式有以下兩種:
#include<file>
Ⅲ C語言頭文件有哪些
字元處理函數
本類別函數用於對單個字元進行處理,包括字元的類別測試和字元的大小寫轉換
頭文件 ctype.h
函數列表<>
函數類別 函數用途 詳細說明
字元測試 是否字母和數字 isalnum
是否字母 isalpha
是否控制字元 iscntrl
是否數字 isdigit
是否可顯示字元(除空格外) isgraph
是否可顯示字元(包括空格) isprint
是否既不是空格,又不是字母和數字的可顯示字元 ispunct
是否空格 isspace
是否大寫字母 isupper
是否16進制數字(0-9,A-F)字元 isxdigit
字元大小寫轉換函數 轉換為大寫字母 toupper
轉換為小寫字母 tolower
地區化
本類別的函數用於處理不同國家的語言差異。
頭文件 local.h
函數列表
函數類別 函數用途 詳細說明
地區控制 地區設置 setlocale
數字格式約定查詢 國家的貨幣、日期、時間等的格式轉換 localeconv
數學函數
本分類給出了各種數學計算函數,必須提醒的是ANSI C標准中的數據格式並不符合IEEE754標准,一些C語言編譯器卻遵循IEEE754(例如frinklin C51)
頭文件 math.h
函數列表
函數類別 函數用途 詳細說明
錯誤條件處理 定義域錯誤(函數的輸入參數值不在規定的范圍內)
值域錯誤(函數的返回值不在規定的范圍內)
三角函數 反餘弦 acos
反正弦 asin
反正切 atan
反正切2 atan2
餘弦 cos
正弦 sin
正切 tan
雙曲函數 雙曲餘弦 cosh
雙曲正弦 sinh
雙曲正切 tanh
指數和對數 指數函數 exp
指數分解函數 frexp
乘積指數函數 fdexp
自然對數 log
以10為底的對數 log10
浮點數分解函數 modf
冪函數 冪函數 pow
平方根函數 sqrt
整數截斷,絕對值和求余數函數 求下限接近整數 ceil
絕對值 fabs
求上限接近整數 floor
求余數 fmod
本分類函數用於實現在不同底函數之間直接跳轉代碼。 頭文件 setjmp.h io.h
函數列表
函數類別 函數用途 詳細說明
保存調用環境 setjmp
恢復調用環境 longjmp
信號處理
該分類函數用於處理那些在程序執行過程中發生例外的情況。
頭文件 signal.h
函數列表
函數類別 函數用途 詳細說明
指定信號處理函數 signal
發送信號 raise
可變參數處理
本類函數用於實現諸如printf,scanf等參數數量可變底函數。
頭文件 stdarg.h
函數列表
函數類別 函數用途 詳細說明
可變參數訪問宏 可變參數開始宏 va_start
可變參數結束宏 va_end
可變參數訪問宏 訪問下一個可變參數宏 va_arg
輸入輸出函數
該分類用於處理包括文件、控制台等各種輸入輸出設備,各種函數以「流」的方式實現
頭文件 stdio.h
函數列表
函數類別 函數用途 詳細說明
文件操作
刪除文件 remove
修改文件名稱 rename
生成臨時文件名稱 tmpfile
得到臨時文件路徑 tmpnam
文件訪問 關閉文件 fclose
刷新緩沖區 fflush
打開文件 fopen
將已存在的流指針和新文件連接 freopen
設置磁碟緩沖區 setbuf
設置磁碟緩沖區 setvbuf
格式化輸入與輸出函數 格式輸出 fprintf
格式輸入 fscanf
格式輸出(控制台) printf
格式輸入(控制台) scanf
格式輸出到緩沖區 sprintf
從緩沖區中按格式輸入 sscanf
格式化輸出 vfprintf
格式化輸出 vprintf
格式化輸出 vsprintf
字元輸入輸出函數 輸入一個字元 fgetc
字元串輸入 fgets
字元輸出 fputc
字元串輸出 fputs
字元輸入(控制台) getc
字元輸入(控制台) getchar
字元串輸入(控制台) gets
字元輸出(控制台) putc
字元輸出(控制台) putchar
字元串輸出(控制台) puts
字元輸出到流的頭部 ungetc
直接輸入輸出 直接流讀操作 fread
直接流寫操作 fwrite
文件定位函數 得到文件位置 fgetpos
文件位置移動 fseek
文件位置設置 fsetpos
得到文件位置 ftell
文件位置復零位 remind
錯誤處理函數 錯誤清除 clearerr
文件結尾判斷 feof
文件錯誤檢測 ferror
得到錯誤提示字元串 perror
實用工具函數
本分類給出了一些函數無法按以上分類,但又是編程所必須要的。
頭文件 stdlib.h
函數列表
函數類別 函數用途 詳細說明
字元串轉換函數 字元串轉換為整數 atoi
字元串轉換為長整數 atol
字元串轉換為浮點數 strtod
字元串轉換為長整數 strtol
字元串轉換為無符號長整型 strtoul
偽隨機序列產生函數 產生隨機數 rand
設置隨機函數的起動數值 srand
存儲管理函數 分配存儲器 calloc
釋放存儲器 free
存儲器分配 malloc
重新分配存儲器 realloc
環境通信 中止程序 abort
退出程序執行,並清除環境變數 atexit
退出程序執行 exit
讀取環境參數 getenv
程序掛起,臨時執行一個其他程序 system
搜索和排序工具 二分查找(數據必須已排序) bsearch
快速排序 qsort
整數運算函數 求絕對值 abs
div
得到除法運算底商和余數
求長整形底絕對值 labs
求長整形除法的商和余數 ldiv
多位元組字元函數 得到多位元組字元的位元組數 mblen
得到多位元組字元的位元組數 mbtowc
多位元組字元轉換 wctomb
多位元組字元的字元串操作 將多位元組串轉換為整數數組 mbstowcs
將多位元組串轉換為字元數組 mcstowbs
字元串處理
本分類的函數用於對字元串進行合並、比較等操作
頭文件 string.h
函數列表
函數類別 函數用途 詳細說明
字元串拷貝 塊拷貝(目的和源存儲區不可重疊) memcpy
塊拷貝(目的和源存儲區可重疊) memmove
串拷貝 strcpy
按長度的串拷貝 strncpy
字元串連接函數 串連接 strcat
按長度連接字元串 strncat
串比較函數 塊比較 memcmp
字元串比較 strcmp
字元串比較(用於非英文字元) strcoll
按長度對字元串比較 strncmp
字元串轉換 strxfrm
字元與字元串查找 字元查找 memchr
字元查找 strchr
字元串查找 strcspn
字元串查找 strpbrk
字元串查找 strspn
字元串查找 strstr
字元串分解 strtok
雜類函數 字元串設置 memset
錯誤字元串映射 strerror
求字元串長度 strlen
日期和時間函數
本類別給出時間和日期處理函數
頭文件 time.h
函數列表
函數類別 函數用途 詳細說明
時間操作函數 得到處理器時間 clock
得到時間差 difftime
設置時間 mktime
得到時間 time
時間轉換函數 得到以ASCII碼表示的時間 asctime
得到字元串表示的時間 ctime
得到指定格式的時間 strftime
函數庫未來的發展方向
本部分用於說明各類別函數庫在將來如何發展。
序號 庫類別 頭文件 詳細說明
1 錯誤處理 errno.h
2 字元處理 ctype.h
3 地區化 local.h
4 數學函數 math.h
5 信號處理 signal.h
6 輸入輸出 stdio.h
7 實用工具程序 stdlib.h
8 字元串處理 string.h
Ⅳ C語言定義一個頭文件的格式和引用它的方法
擴展名為.h的文件,在C語言中被稱為header file, 也就是頭文件。
頭文件的數據格式就是普通的文本文件,可以通過新建文本文件(txt),再把擴展名改為.h的方式創建,在此不贅述。
一、頭文件內容格式。
頭文件內容並沒有固定的格式要求,不過一般為防止嵌套引用給編譯器帶來死鎖或者沒必要的開銷,一般約定整個頭文件中所有內容在一個條件編譯下,即如下格式:
#ifndef 宏名
#define 宏名
//頭文件主體
#endif
這樣可以保證一個頭文件在一個源文件中最多隻被引用一次。為避免宏名重復,宏名一般由頭文件名轉換而來,如果頭文件名是xxx.h,那麼宏名一般定義為:
_XXX_H_
即前後各加一個下劃線,同時文件名中除數字、字母、下劃線以外的字元均轉換為下劃線(_)。
頭文件主體中內容同樣沒有做強制約定,可以出現在源文件(.c)中的任何代碼均可以放在頭文件中。不過一般情況下可以包括以下幾種內容:
1 引用其它頭文件,格式為
#include <xxx.h>
或
#include "xxx.h"
二者區別在介紹頭文件引用時再詳細介紹。
2 定義私有類型。比如
typedef unsigned long U32; //為了簡寫而給無符號32位整型定義一個新的名字
struct xxx {};
也可以是enum, union等復雜類型。
3 宏定義。比如
#define MAX(a,b) (a>b?a:b)
4 函數聲明。比如
void test_function(void);
5 全局變數聲明。比如
extern int global_var;
6 如果有一個靜態全局變數需要在不同源文件中使用,但各文件之間互不相關。那麼可以放在頭文件中。如:
static int gs_var = 3;
7 對於支持C99規范的C編譯器,還可以把內聯函數定義在頭文件中。比如
staticinlineintget_min(inta,intb)
{
if(a>b)returnb;
returna;
}
以上是常見的頭文件中的元素。但實際上頭文件中也可以放全局變數的定義,全局函數的實現等。但是頭文件中一旦定義了這樣的元素,這個頭文件在一個工程中只能被一個文件引用,否則編譯器會報重復定義的錯誤。
比如如果有一個規模很大的常量數組,比如一副圖片的二進制值,如果把它定義在源文件中,就會顯得很冗餘,因為並不會經常修改。 這時可以定義在頭文件中,只在一個源文件中引用,當有多幅圖片需要隨時更換時,也可以通過簡單的在源文件中修改引用的頭文件名達到修改的目的。
二、頭文件的引用。
頭文件引用的方法其實之前已經大致說過了,在源文件中引用頭文件和在頭文件中引用的格式是一樣的:
#include<xxx.h>或者
#include "xxx.h"
xxx為頭文件名。
用<>和""是有一定的區別的。在編譯器查找頭文件的時候,會在兩個區域分別查找。
一個是系統頭文件區域,即類似於stdio.h一類的C庫函數頭文件區。
另一個是自定義頭文件區,比如當前目錄,以及其它自定義的目錄。
用<>時,編譯器會先在系統區域查找,然後再查找自定義區域。而用""時則相反。
由於一般並不推薦自定義頭文件名與系統頭文件名相同(容易引起歧義並難以維護),所以先後順序並不是太重要,尤其在硬體速度越來越快的今天,使用哪種符號引用頭文件已經差別很小了。
Ⅳ 如何在c語言頭文件中聲明FILE
頭文件是一種文本文件,使用文本編輯器將代碼編寫好之後,以擴展名.h保存就行了。頭文件中一般放一些重復使用的代碼,例如函數聲明,變數聲明,常數定義,宏的定義等等。
當使用#include語句將頭文件引用時,相當於將頭文件中所有內容,復制到#include處。為了避免因為重復引用而導致的編譯錯誤,頭文件常具有:
#ifndef _DELAY_H_
#define _DELAY_H_
//代碼部分
#endif
的格式。
(5)filec語言頭文件擴展閱讀
C語言頭文件的作用
在C語言中,頭文件是程序格部分之間保證信息一致性的橋梁,連接程序對象定義和使用的紐帶。
通常開發C程序的程序員會把一個程序分為兩類:以h為擴展名的輔助性文件,也稱為頭文件。以.c為擴展名的基本程序文件,也稱為源代碼文件;定義好頭文件是保證大型程序開發工作能夠順利進行的重要環節。
比如幾個人共同開發一個大系統,他們之間需要有一些約定。 如果一個人定義的東西唄另一個人使用,就需要通過引入對應的頭文件來建立相互間的聯系。
在程序開發時,最早成型的可能是一批頭文件,它們形成不同工作者之間的聯系標准。即使是一個人, 在採用分塊坊式寫程序時也有類似的情況。
Ⅵ C語言如何寫頭文件
/*頭文件內容,假設名字是test.h*/
#ifndef MYHEADFILE
#define MYHEADFILE
void InitInterpolation();
void Draw_Border();
void Draw_Background();
void Draw_Gray();
#endif
/*以下是test.c的內容*/
#include "test.h"
/*後面就是各個函數的實現*/
同項目中其他各個文件需要使用這些函數時只需要下面這樣一句:
#include "test.h"
千萬不要包含.c文件,會出現重復定義問題
Ⅶ c語言中,如何在頭文件中調用某個源文件的函數
file1.c
頭文件為file1.h
file2.c
頭文件為file2.h
比如file2.c要調用file1.c里的一個函數
首先file2.c里要包含file1.h頭文件(file1.h里有file1.c的函數申明)
然後file2.c文件里要有file1.c里的外部函數申明,用extern關鍵字申明
然後就可以直接file2.c裡面調用file1.c里的函數了
Ⅷ C語言代碼的頭文件與源文件有什麼區別
頭文件和源文件在本質上沒有任何區別。 只不過一般:後綴為 .h 的文件是頭文件,內含函數聲明、宏定義、結構體定義等內容。後綴為 .c 的文件是源文件,內含函數實現,變數定義等內容。而且是什麼後綴也沒有關系,只不過編譯器會默認對某些後綴的文件採取某些動作。這樣分開寫成兩個文件是一個良好的編程風格。
簡單的說其實要理解C文件與頭文件(即.h)有什麼不同之處,首先需要弄明白編譯器的工作過程,一般說來編譯器會做以下幾個過程:
①預處理階段
②詞法與語法分析階段
③ 編譯階段,首先編譯成純匯編語句,再將之匯編成跟CPU相關的二進制碼,生成各 個目標文件 (.obj文件)
④連接階段,將各個目標文件中的各段代碼進行絕對地址定位,生成跟特定平台相關 的可執行文件,當然,最後還可以用obj生成純二進制碼,也就是去掉了文件格 式信 息。(生成.exe文件)
3.比方說 在aaa.h里定義了一個函數的聲明,然後在aaa.h的同一個目錄下建立aaa.c , aaa.c里定義了這個函數的實現,然後是在main函數所在.c文件里#include這個aaa.h 然後我就可以使用這個函數了。 main在運行時就會找到這個定義了這個函數的aaa.c文件。這是因為:main函數為標准C/C++的程序入口,編譯器會先找到該函數所在的文件。假定編譯程序編譯myproj.c(其中含main())時,發現它include了mylib.h(其中聲明了函數void test()),那麼此時編譯器將按照事先設定的路徑(Include路徑列表及代碼文件所在的路徑)查找與之同名的實現文件(擴展名為.cpp或.c,此例中為mylib.c),如果找到該文件,並在其中找到該函數(此例中為void test())的實現代碼,則繼續編譯;如果在指定目錄找不到實現文件,或者在該文件及後續的各include文件中未找到實現代碼,則返回一個編譯錯誤.其實include的過程完全可以「看成」是一個文件拼接的過程,將聲明和實現分別寫在頭文件及C文件中,或者將二者同時寫在頭文件中,理論上沒有本質的區別。以上是所謂動態方式。對於靜態方式,基本所有的C/C++編譯器都支持一種鏈接方式被稱為Static Link,即所謂靜態鏈接。在這種方式下,我們所要做的,就是寫出包含函數,類等等聲明的頭文件(a.h,b.h,...),以及他們對應的實現文件(a.cpp,b.cpp,...),編譯程序會將其編譯為靜態的庫文件(a.lib,b.lib,...)。在隨後的代碼重用過程中,我們只需要提供相應的頭文件(.h)和相應的庫文件(.lib),就可以使用過去的代碼了。相對動態方式而言,靜態方式的好處是實現代碼的隱蔽性,即C++中提倡的「介面對外,實現代碼不可見」。有利於庫文件的轉發.
Ⅸ C語言怎麼給一個文件添加頭文件
1234#include "file1.h" //這里就添加引用頭文件了 //如果你的意思是說要創建頭文件,//那就使用快捷鍵 CTRL+N 即可創建頭文件.
Ⅹ c語言什麼是頭文件
頭文件在計算機C語言家族程序中被大量使用,主要作用在於多個代碼文件全局變數的重用、防止定義的沖突,對各個被調用函數給出一個描述,其本身不需要包含程序的邏輯實現代碼,它只起描述性作用,用戶程序只需要按照頭文件中的介面聲明來調用相關函數或變數,鏈接器會從庫中尋找相應的實際定義代碼。
一些初學C語言的人,不知道頭文件(*.h文件)原來還可以自己寫的。只知道調用系統庫函數時,要使用#include語句將某些頭文件包含進去。其實,頭文件跟.C文件一樣,是可以自己寫的。頭文件是一種文本文件,使用文本編輯器將代碼編寫好之後,以擴展名.h保存就行了。頭文件中一般放一些重復使用的代碼,例如函數聲明,變數聲明,常數定義,宏的定義等等。當使用#include語句將頭文件引用時,相當於將頭文件中所有內容,復制到#include處。使用頭文件不僅可以減少工作量,還可以減少因代碼編寫不細心而導致的錯誤。
工具/原料
Visual C++ 6.0
方法/步驟
打開Visual C++ 6.0,文件-新建-文件選項卡-C/C++ Header File
編寫代碼如下:
max(int x,int y)
{
if(x>y)
printf("%d",x);
else
printf("%d",y);
}
按Ctrl+S或者點擊保存,然後可以看到目錄下有一個H1.H,這就是我們的頭文件了,把它放到“Visual C++ 6.0安裝目錄\VC98\ATL\Include”文件夾下就可以使用了。
使用方法就像使用自帶的頭文件一樣。
一個簡單的比較兩數大小的頭文件就完成了,很簡單吧。