為什麼要創建頭文件
⑴ VS中C++程序系統都要加個"stdafx"頭文件,這個干什麼用的
stdafx.h : 標准系統包含文件的包含文件
VC創建項目時自動創建的預編譯頭文件,在編譯其他文件之前,VC先預編譯此文件。頭文件stdafx.h引入了項目中需要的一些通用的頭文件,比如window.h等,在自己的頭文件中包括stdafx.h就包含了那些通用的頭文件。
所謂頭文件預編譯,就是把一個工程(Project)中使用的一些MFC標准頭文件(如Windows.H、Afxwin.H)預先編譯,以後該工程編譯時,不再編譯這部分頭文件,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。
預編譯頭文件通過編譯stdafx.cpp生成,以工程名命名,由於預編譯的頭文件的後綴是「pch」,所以編譯結果文件是projectname.pch。
編譯器通過一個頭文件stdafx.h來使用預編譯頭文件。stdafx.h這個頭文件名是可以在project的編譯設置里指定的。編譯器認為,所有在指令#include "stdafx.h"前的代碼都是預編譯的,它跳過#include "stdafx. h"指令,使用projectname.pch編譯這條指令之後的所有代碼。
因此,所有的CPP實現文件第一條語句都是:#include "stdafx.h"。
⑵ 在C語言中創建源文件跟頭文件有什麼區別
有區別,頭文件不參加編譯,只是調用,可以定義類,結構體,聯合體等等
源文件要參見編譯,並且可以包含頭文件,main()函數只能在源文件中,定義函數,
頭文件可以進行的,源文件都可以進行,反之不然。
還有他們拓展名不同,頭.h 源文件.cpp
⑶ C語言中新建一個C/C++頭文件和一個與C/C++源文件有什麼區別
1、相同點:
頭文件與源代碼都是源文件,都用純文本文件存儲,都需要遵照C/C++語言規范來寫,都可以使用類型定義和常、變數定義,都可以包含函數的聲明和實現,都能包含宏定義,都使用相同的調用規范。
2、不同點:
C/C++的編譯器規定源代碼文件必須包含函數入口,即main函數,或者winmain函數。而頭文件不得包含函數入口,也就是說,頭文件不可以單獨編譯成一個程序,僅僅包含程序片斷或者僅僅定義常、變數。
3、關聯:
頭文件是專為源代碼調用而寫的靜態包含文件,可被源代碼文件中的#include編譯預處理指令解釋,而將頭文件完整拷貝到源代碼的指令處,從而在編譯時相當於在源代碼中插入了函數聲明或者實現。
某些頭文件包含了靜態庫中的函數調用聲明,包含了LIB文件的調用信息,編譯時靜態鏈接進程序;而某些頭文件是專為方便API調用而寫的,裡麵包含了動態鏈接庫的調用信息和規范,只有在運行時將DLL載入內存提取函數執行。
也就是說,其實你將頭文件里的信息完全寫到源代碼里,是可以實現完全相同的功能的。如果想要學寫頭文件,可以參照標准C/C++庫的h文件。
⑷ C++中建立工程是自己建立自己的頭文件有何好處怎樣建立
你以後如果做一個較大的工程,就需要用到很多自己定義的函數等,那樣可以節省時間,又可以讓代碼更加簡潔,而且自己的函數,不管哪個程序都是可以調用的
⑸ C++ 怎麼自己創建頭文件
1、打開vc++6.0編譯器,如圖選擇新建功能。
⑹ 創建靜態庫/動態庫一定要有頭文件嗎為什麼
不一定需要。創建一個庫一般處於一下兩種目的:
1、把一些相關的代碼,打包成一個庫,發布給其它的人用。
這中情況是最常見的情況,如寫
C
語言用到
libgcc。在這種情況下,你除了提供庫文件:靜態庫[
windows
下
.lib,linux
.a];動態庫:[Windows
下
.dll,Linux
下
.so]
之外,必須提供頭文件。頭文件是你這個庫裡面提供了那些介面可以供外界使用。如果沒有頭文件,其他人無法使用。
2、為某些軟體寫插件。
很多大的項目,都是模塊化設計,留有一些特定的介面,方便定製。當程序運行時,會動態載入制定目錄下的動態庫,運行時調用動態庫裡面約定好的方法。
這種情況無需提供頭文件,但要按照特定的約定來實現這個庫。
大概就是以上這些情況。
⑺ 為什麼在c++系統中會新建立帶擴展名為h的頭文件
h文件是頭文件,在多文件系統中建立h文件方便其他文件引用。
⑻ 頭文件里的頭文件是幹嘛的
第一種情況,把每個代碼塊所需要的頭文件都包含在內,是為了方便代碼重用,也就是這個項目的代碼有可能需要移植到另一個項目中,如果不把頭文件寫清楚,那麼就會產生很多不必要的麻煩
第二種情況,是能夠保證上面說的情況不會出現才使用的,一般都是自己寫的小型工程里
頭文件里一般都會使用
#ifndef _B_H_ //假設這里是b.h
#define _B_H_
... //代碼略
#endif
來避免頭文件被重復包含後出現的編譯錯誤
在visual c++中,可以直接在頭文件第一行處使用
#pragma once
來防止頭文件被重復包含,效果與上面的代碼一樣