BCB6中的 Pragma說明(二)

2021-04-13 04:52:51 字數 3531 閱讀 1026

10.#pragma hdrstop

#pragma hdrstop

hdrstop pragma用於終止若干個標頭檔案的預編譯,可有效減少預編譯標頭檔案占用的磁碟空間。

凡在原始檔中#pragma hdrstop指令之前被引用的標頭檔案都將被預編譯成預編譯標頭檔案。假如乙個標頭檔案同時被多個原始檔引用,那麼生成的預編譯標頭檔案同樣可被多個源檔案共享。因此,在工程中#pragma hdrstop指令之前包含通用標頭檔案可獲得更好的編譯效能。

例如,乙個新應用程式建立後,原始檔「unit1.cpp」都會包含類似內容:

#include // common header file

#pragma hdrstop

// terminate list here

#include "unit1.h"

// specific header file

#pragma hdrstop指令只能在原始檔中使用,標頭檔案中使用沒有任何效果。

11.#pragma inline

#pragma inline

該指令等同於「-b」命令列選項。.

#pragma inline指令最好放在原始檔的頂部,因為編譯器每次遇到#pragma inline指令都會加上「-b」命令列選項重新編譯該檔案。

12.#pragma intrinsic

#pragma intrinsic [-]function-name

#pragma intrinsic用於重寫控制函式內聯的命令列開關或ide選項。

內聯乙個指定的函式前必須包含該函式的原型。

例如:#pragma intrinsic strcpy

編譯器將在呼叫strcpy函式的函式內產生strcpy函式實現**。

#pragma intrinsic –strcpy

阻止編譯器對strcpy內聯。

13.#pragma link

#pragma link 「[path]modulename[.ext]」

該指令命令聯結器將乙個檔案連線到可執行檔案中。預設情況下,聯結器預設在本地路徑下查詢modulename檔案,modulename檔案字尾為「.obj」。使用命令列選項「-l」或者path引數指定任意路徑。

14.#pragma message

#pragma message ("text" ["text"["text" ...]])

#pragma message text

#pragma message (text)

使用這三個指令用於在程式**中顯示自定義的訊息。

第乙個指令用於輸出乙個訊息,其中的巨集不被展開。

第二個指令用於輸出乙個包含巨集的訊息,其中的巨集將被展開。

第三個指令用於展開並輸出乙個已定義的巨集。如果巨集未被定義,將輸出乙個該指令無效的訊息。

例如:#ifdef __borlandc__

#pragma message you are compiling using version __borlandc__ of c++builder.

#else

#pragma message 「sorry,you are not using c++builder compiler.」

#endif

14.#pragma obsolete

#pragma obsolete identifier

凡是在程式**中該指令後遇到identifier識別符號,預編譯器將第一時間給出乙個警告資訊。警告顯示該識別符號已作廢。

15.#pragma option

#pragma option options

#pragma option push options

#pragma option pop

#pragma nopushoptwarn

使用#pragma option指令用於在程式**中包含命令列選項。#pragma option指令也可以附加push 和 pop引數後使用。

大部分命令列選項都可以作為options引數使用。options引數允許同時包含多個命令列選項。例如:

#pragma option -c

#pragma option -c –a

使用#pragma option push指令可以儲存當前所有的命令列選項。#pragma option pop指令和#pragma option push指令配對使用,用於恢復以前儲存的命令列選項。例如:

#pragma option push

#include

#pragma option pop

#include 「ystuff.h」

下面的例項因push和pop指令未配對使用,將會產生乙個空棧警告。

#pragma option push

#pragma option pop

#pragma option pop

/* warning */

通過#pragma warn –nop指令可以關閉這個警告。

有一點必須特別注意,必須保證每個檔案中的#pragma option push和#pragma option pop指令配對使用。如果在檔案結尾和檔案開始時的命令列選項堆疊內容不一致,將會顯示乙個警告:「以前的選項和警告沒有恢復?」。

通過#pragma nopushoptwarn.指令關閉這個警告。

16.#pragma pack

#pragma pack([[,]] [identifier[,]] [n])

#pragma pack(n)指令和#pragma option –an指令的作用是一樣的。n表示編譯器在記憶體中排列資料的位元組對齊方式。

#pragma pack()表示選擇編譯器預設的位元組對齊方式,預設為8位元組。

#pragma pack(n)表示選擇n值作為位元組對齊方式。n可以為1,2,4,8和16。

#pragma pack(push) 表示壓入當前位元組對齊方式。

#pragma pack(push, ident) 表示關聯識別符號ident後壓入當前位元組對齊方式。

#pragma pack(push, n) 表示壓入當前位元組對齊方式,選擇n值作為位元組對齊方式。

#pragma pack(push, ident, n) 表示關聯識別符號ident後壓入當前位元組對齊方式,選擇n值作為位元組對齊方式。

#pragma pack(pop) 表示彈出最後壓入的位元組對齊方式。

#pragma pack(pop, ident) 表示彈出關聯識別符號ident的位元組對齊方式。如果沒有找到該識別符號,選擇預設位元組對齊方式。

#pragma pack(pop,n) 表示彈出n值大小的位元組對齊方式。如果沒有找到匹配的內容,選擇預設位元組對齊方式。

#pragma pack(pop, ident,n) 表示彈出關聯識別符號ident的n值大小的位元組對齊方式。如果沒有找到匹配的內容,選擇預設位元組對齊方式。

#pragma pop指令必須和#pragma push指令配對使用。

BCB6中Indy9傳送郵件的例子

有兩個控制項 tidmessage idmsgsend,tid tp tp 傳送郵件 注 傳送的 tp屬性通過 tp setup函式設定了 引數 in cto,收件人 ccc 抄送 cbcc 暗抄 csubject 主題 cbody 內容 cattachlist 傳送的附件 以n分割 out msg...

《轉》記錄一些BCB6的使用心得

源 自從2000年開始接觸bcb,使用bcb作程式設計入門學習,一路走來,遇到了不少不大不小的問題。一晃9年過去了,bcb不再陌生,當初為問題困擾時那種手足無措的記憶也漸漸淡了。每念及此,甚有把一些心得寫作文字的緊迫感。鑑於本人技術能力和文字水平之限,一直未能下決心,今天鼓起勇氣做這事,好歹不論,只...

VC中 Pragma的使用方法 二

在編寫程式的時候,我們經常要用到 pragma指令來設定編譯器的狀態或者是指示編譯器完成一些特定的動作.下面介紹了一下該指令的一些常用引數,希望對大家有所幫助 一.message 引數。message 它能夠在編譯資訊輸出窗 口中輸出相應的資訊,這對於源 資訊的控制是非常重要的。其使用方法為 pra...