一、主要功能
對每個編譯器給出了一方法,在保持與c和c++語言完全相容的情況下,給出主機或作業系統專有的特徵。
編譯指示是機器或作業系統專有的,且對於每個編譯器都是不同的。
二、命令格式
#pragma para
其中:para為命令引數。
三、常見引數和意義
3.1 message
在編譯資訊輸出視窗中輸出相應的資訊,這對於源**資訊的控制是非常重要的。其使用方法為:
#pragma message("訊息文字")
當編譯器遇到這條指令時就在編譯輸出視窗中將訊息文字列印出來。
如果在程式中定義了許多巨集,用於控制源**版本,則有可能會忘記有沒有正確的設定這些巨集,此時可以用這條指令在編譯的時候就進行檢查。
假設希望判斷有沒有在源**的什麼地方定義了_x86這個巨集,可以用下面的方法:
#ifdef _x86
#pragma message("_x86 macro activated!")
#endif
定義了_x86這個巨集以後,應用程式在編譯時就會在編譯輸出視窗裡顯示"_86 macro activated!"。就會知道有沒有定義一些特定的巨集了。
3.2 code_seg
格式:
#pragma code_seg( ["section-name" [,"section-class"] ])
它能夠設定程式中函式**存放的**段,當開發驅動程式的時候就會使用到它。
3.3 once
只要在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次,這條指令實際上在vc6中就已經有了,但是考慮到相容性並沒有太多的使用它。
3.4 hdrstop
表示預編譯標頭檔案到此為止,後面的標頭檔案不進行預編譯。bcb可以預編譯標頭檔案以加快鏈結的速度,但如果所有標頭檔案都進行預編譯又可能占太多磁碟空間,所以使用這個選項排除一些標頭檔案。有時單元之間有依賴關係,比如單元 a 依賴單元 b,所以單元 b 要先於單元 a 編譯。
可以用#pragma startup 指定編譯優先順序,如果使用了#pragma package(smart_init),bcb就會根據優先順序的大小先後編譯。
3.5 resource "*.dfm"
表示把*.dfm檔案中的資源加入工程。*.dfm中包括窗體外觀的定義。
3.6 warning(disable: 4507 34; once: 4385; error: 164 )
不顯示4507和34號警告資訊 ,4385號警告資訊僅報告一次,把164號警告資訊作為乙個錯誤。
pragma warning 支援的其它下格式:
#pragma warning( push ) 儲存所有警告資訊的現有的警告狀態。
#pragma warning( push, n ) 儲存所有警告資訊的現有的警告狀態,並且把全域性警告等級設定為n(1-4)。
#pragma warning( pop ) 從棧中彈出最後乙個警告資訊,在入棧和出棧之間所作的一切改動取消。
3.7 comment(...)
該指令將乙個注釋記錄放入乙個物件檔案或可執行檔案中。
常用的lib關鍵字,可以幫我們連入乙個庫檔案。如:
#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "vfw32.lib")
#pragma comment(lib, "wsock32.lib")
3.8 #pragmaloop_opt(on|off)
啟用迴圈|終止迴圈優化功能。
3.9 #pragma warn +100 |-100
啟用或者禁止:「變數已定義但未使用的」警告資訊。
pragma 預處理指令詳解
pragma 預處理指令詳解 在所有的預處理指令中,pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma指令對每個編譯器給出了乙個方法,在保持與c和c 語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有...
pragma 預處理指令詳解
7 pragma comment 該指令將乙個注釋記錄放入乙個物件檔案或可執行檔案中。常用的lib關鍵字,可以幫我們連入乙個庫檔案。每個編譯程式可以用 pragma指令啟用或終止該編譯程式支援的一些編譯功能。例如,對迴圈優化功能 pragma loop opt on 啟用 pragma loop o...
pragma 預處理指令詳解
在所有的預處理指令中,pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma指令對每個編譯器給出了乙個方法,在保持與c和c 語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有的,且對於每個編譯器都是不同的...