預編譯頭文件怎麼創建
❶ vs2010怎麼預編譯頭文件
清理解決方案。。然後重新生成
❷ c語言中如何編譯頭文件啊
只要在程序開頭加入#include<頭文件名>,在編譯過程當中,頭文件自動會被添加到源文件當中一起進行編譯。
編譯,編譯程序讀取源程序(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的匯編代碼,再由匯編程序轉換為機器語言,並且按照操作系統對可執行文件格式的要求鏈接生成可執行程序。
C源程序頭文件-->預編譯處理(cpp)-->編譯程序本身-->優化程序-->匯編程序-->鏈接程序-->可執行文件。
❸ VC中".pch"是什麼文件,沒有.pch文件怎麼辦(ZZ)
.pch文件是 用來預編譯頭文件用的,如果生成.pch文件,上次編譯的部分頭文件,下次就不用重新再編譯了。
所謂的預編譯頭就是把一個工程中的那一部分代碼,預先編譯好放在一個文件里(通常是以.pch為擴展名的),這個文件就稱為預編譯頭文件這些預先編譯好的代碼可以是任何的 C/C++代碼--------甚至是inline的函數,但是必須是穩定的,在工程開發的過程中不會被經常改變。如果這些代碼被修改,則需要重新編譯生成預編譯頭文件。注意生成預編譯頭文件是很耗時間的。同時得注意預編譯頭文件通常很大,通常有6-7M大。注意及時清理那些沒有用的預編譯頭文件。
編譯器是以文件為單位編譯的,一個文件經過修改後,會重新編譯整個文件,當然在這個文件里包含的所有頭文件中的東西(.eg Macro, Preprocesser )都要重新處理一遍。VC的預編譯頭文件保存的正是這部分信息。以避免每次都要重新處理這些頭文件。
預編譯頭的作用:
根據上文介紹,預編譯頭文件的作用當然就是提高便宜速度了,沒有必要每次 都編譯那些不需要經常改變的代碼。編譯性能當然就提高了。
預編譯頭的使用:
要使用預編譯頭,我們必須指定一個頭文件,這個頭文件包含我們不會經常改變的代碼和其他的頭文件,然後用這個頭文件來生成一個預編譯頭文件(.pch文件)StdAfx.h這個文件。這是VC提供的一個「系統級別」的,編譯器帶的一個頭文件。其實不是的,這個文件可以是任何名字的。 典型的由AppWizard生成的MFC Dialog Based程序的預編譯頭文件。(因為AppWizard 會指定好如何使用預編譯頭文件,默認的是StdAfx.h,這是VC起的名字)。發現這個頭文件里包含了以下的頭文件:
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4
Common Controls
#include <afxcmn.h>
這些正是使用MFC的必須包含的頭文件
一個頭文件是不能編譯的。所以還需要一個cpp文件來生成.pch 文件。這個文件默認的就是StdAfx.cpp。在這個文件里只有一句代碼就是:#include 「Stdafx.h」。原因是理所當然的,僅僅是要它能夠編譯而已?D?D?D也就是說,要的只是它的.cpp的擴展名。可以用/Yc編譯開關來指
定StdAfx.cpp來生成一個.pch文件,通過/Fp編譯開關來指定生成的pch文件的名字。打 開project ->Setting->C/C++ 對話框。把Category指向Precompiled Header。在左邊的樹形視圖里選擇整個工程Project Options(右下角的那個白的地方)可以看到 /Fp 「debug/PCH.pch」,這就是指 定生成的.pch文件的名字,默認的通常是<工程名>.pch(示例工程名就是PCH)。 然後,在左邊的樹形視圖里選擇StdAfx.cpp.//這時只能選一個cpp文件! 這時原來的Project Option變成了 Source File Option(原來是工程,現在是一個文件,當然變了)。在這里可以看到 /Yc開關,/Yc的作用就是指定這個文件來創建一個 Pch文件。/Yc後面的文件名是那個包含了穩定代碼的頭文件,一個工程里只能有一個文件的可以有YC開關。VC就根據這個選項把 StdAfx.cpp編譯成一個Obj文件和一個PCH文件。
然後再選擇一個其它的文件來看看,//其他cpp文件
在這里,Precomplier 選擇了 Use ???一項,頭文件是指定創建PCH 文件的stda fx.h 文件。事實上,這里是使用工程里的設置,(如圖1)/Yu」stdafx.h」。這樣,就設置好了預編譯頭文件。就可以使用預編譯頭功能了。
❹ C++ 怎麼自己創建頭文件
1、打開vc++6.0編譯器,如圖選擇新建功能。
❺ vs2008添加預編譯命令
以預編譯頭文件為Stdafx.h為例:
Qt Creator中很簡單,只需在.pro文件中加入一行PRECOMPILED_HEADER = stdafx.h
VS2008在工程中在Stdafx.h文件上右鍵propertis-Configuration Properties-C/C++-Precompiled Headers-Create/Use Precompiled Header中選擇Create Precompiled Header(/y).
有一點注意的是,在工程Generated Filed中的moc相關文件也需要選上Use Precompiled Header (/Yu).
❻ 在c語言中,如何自定義頭文件
自定義頭文件通常放在使用該頭文件的源文件所在的目錄中,並使用#include "MyHead.h"來包含。
頭文件是不編譯的,因為C語言編譯過程之前有個預編譯過程。在這個過程中用頭文件中的內容替換源文件中「#include」命令,所以在編譯器看來,沒有頭文件,只有源文件。預編譯過程還包括條件編譯。
頭文件為了防止被重復包含,通常的格式是:
/* MyHead.h */
#ifndef _MYHEAD_H_
#define _MYHEAD_H_
(這里是頭文件的內容)
#endif /* _MYHEAD_H_ */
拓展資料
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
❼ 什麼是預編譯 何時需要預編譯 mfc面試
預編譯又稱為預處理,是做些代碼文本的替換工作
預編譯又稱為預處理,是做些代碼文本的替換工作
處理#開頭的指令,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等
就是為編譯做的預備工作的階段
主要處理#開始的預編譯指令
預編譯指令指示了在程序正式編譯前就由編譯器進行的操作,可以放在程序中的任何位置。常見的預編譯指令有:
(1)#include 指令
該指令指示編譯器將xxx.xxx文件的全部內容插入此處。若用<>括起文件則在系統的INCLUDE目錄中尋找文件,若用" "括起文件則在當前目錄中尋找文件。一般來說,該文件是後綴名為"h"或"cpp"的頭文件。
注意:<>不會在當前目錄下搜索頭文件,如果我們不用<>而用""把頭文件名擴起,其意義為在先在當前目錄下搜索頭文件,再在系統默認目錄下搜索。
(2)#define指令
該指令有三種用法:
第一種是定義標識,標識有效范圍為整個程序,形如#define XXX,常與#if配合使用;
第二種是定義常數,如#define max 100,則max代表100(這種情況下使用const定義常數更好,原因見注1);
第三種是定義"函數",如#define get_max(a, b) ((a)>(b)?(a):(b)) 則以後使用get_max(x,y)就可以得到x和y中較大的數(這種方法存在一些弊病,見注2)。
第四種是定義"宏函數",如#define GEN_FUN(type) type max_##type(type a,type b){return a>b?a:b;} ,使用時,用GEN_FUN(int),則此處預編譯後就變成了 max_int(int a,int b){return a>b?a:b;},以後就可以使用max_int(x,y)就可以得到x和y中較大的數.比第三種,增加了類型的說明。
(3)#if、#else和#endif指令
這些指令一般這樣配合使用:
#if defined(標識) //如果定義了標識
要執行的指令
#else
要執行的指令
#endif
在頭文件中為了避免重復調用(比如說兩個頭文件互相包含對方),常採用這樣的結構:
#if !(defined XXX) //XXX為一個在你的程序中唯一的標識符,
//每個頭文件的標識符都不應相同。
//起標識符的常見方法是若頭文件名為"abc.h"
//則標識為"abc_h"
#define XXX
真正的內容,如函數聲明之類
#endif