pragma預處理指令

2021-06-04 23:11:23 字數 2247 閱讀 3922

在所有的預處理指令中,#pragma指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。#pragma指令對每個編譯器給出了乙個方法,在保持與c和c++語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有的,且對於每個編譯器都是不同的。

其格式一般為: #pragma para

其中para 為引數,下面來看一些常用的引數。

1、message 引數。 message 引數能夠在編譯資訊輸出視窗中輸出相應的資訊,這對於源**資訊的控制是非常重要的。其使用方法為:

#pragma message(「訊息文字」)

當編譯器遇到這條指令時就在編譯輸出視窗中將訊息文字列印出來。

2、另乙個使用得比較多的pragma引數是code_seg。格式如:

#pragma code_seg( ["section-name"[,"section-class"] ] )

它能夠設定程式中函式**存放的**段,當我們開發驅動程式的時候就會使用到它。

3、#pragma once (比較常用)

只要在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次,這條指令實際上在vc6中就已經有了,但是考慮到相容性並沒有太多的使用它。

#pragma once是編譯相關,就是說這個編譯系統上能用,但在其他編譯系統不一定可以,也就是說移植性差,不過現在基本上已經是每個編譯器都有這個定義了。

4、#pragma warning( disable : 4507 34; once : 4385; error : 164 )

等價於:

#pragma warning(disable:4507 34) // 不顯示4507和34號警告資訊

#pragma warning(once:4385) // 4385號警告資訊僅報告一次

#pragma warning(error:164) // 把164號警告資訊作為乙個錯誤。

同時這個pragma warning 也支援如下格式:

#pragma warning( push [ ,n ] )

#pragma warning( pop )

這裡n代表乙個警告等級(1—4)。

#pragma warning( push )儲存所有警告資訊的現有的警告狀態。

#pragma warning( push, n)儲存所有警告資訊的現有的警告狀態,並且把全域性警告等級設定為n。

#pragma warning( pop )向棧中彈出最後乙個警告資訊,

在入棧和出棧之間所作的一切改動取消。例如:

#pragma warning( push )

#pragma warning( disable : 4705 )

#pragma warning( disable : 4706 )

#pragma warning( disable : 4707 )

//…….

#pragma warning( pop )

在這段**的最後,重新儲存所有的警告資訊(包括4705,4706和4707)。

5、#pragma comment(…)

該指令將乙個注釋記錄放入乙個物件檔案或可執行檔案中,常用的lib關鍵字,可以幫我們連入乙個庫檔案。該指令的格式為

#pragma comment( 「comment-type」 [, commentstring] )

該指令將乙個注釋記錄放入乙個物件檔案或可執行檔案中,comment-type(注釋型別):可以指定為五種預定義的識別符號的其中一種五種預定義的識別符號為:

compiler:將編譯器的版本號和名稱放入目標檔案中,本條注釋記錄將被編譯器忽略,如果你為該記錄型別提供了commentstring引數,編譯器將會產生乙個警告,例如:#pragma comment( compiler )。

exestr:將commentstring引數放入目標檔案中,在鏈結的時候這個字串將被放入到可執行檔案中,當作業系統載入可執行檔案的時候,該引數字串不會被載入到記憶體中.但是,該字串可以被dumpbin之類的程式查詢出並列印出來,你可以用這個識別符號將版本號碼之類的資訊嵌入到可執行檔案中。

lib:這是乙個非常常用的關鍵字,用來將乙個庫檔案鏈結到目標檔案中常用的lib關鍵字,可以幫我們連入乙個庫檔案。例如:

#pragma comment(lib, 「user32.lib」), 該指令用來將user32.lib庫檔案加入到本工程中。

linker:將乙個鏈結選項放入目標檔案中,你可以使用這個指令來代替由命令列傳入的或者在開發環境中設定的鏈結選項,你可以設定/include選項來強制包含某個物件。

pragma 預處理指令

pragma 預處理指令詳解 在所有的預處理指令中,pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma指令對每個編譯器給出了乙個方法,在保持與c和c 語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有...

pragma 預處理指令

pragma 預處理指令 pragma 的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。其格式一般為 pragma para 其中para 為引數,下面來看一些常用的引數。1 message 引數。它能夠在編譯資訊輸出視窗中輸出相應的資訊,這對於源 資訊的控制是非常重要的。其使用方法為 ...

pragma 預處理指令

在所有的預處理指令中,pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma指令對每個編譯器給出了乙個方法,在保持與c和c 語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有的,且對於每個編譯器都是不同的...