Delphi編譯指令詳解 收集

2022-03-31 11:44:55 字數 3262 閱讀 5320

delphi編譯指令共有三種,開關編譯指令、引數編譯指令和條件編譯指令。

乙個編譯指令實際上是乙個標誌符(編譯器所能識別的標誌符),且有其固定的語法。

編譯器根據不同的指令按不同的方式編譯程式。

你可以將乙個編譯指令放在程式的任何位置。編譯指令的開始字元是「 $「 ,

它總是出現在 「」。

下面分別講述三種編譯指令

開關編譯指令地特點是它有 on 、off 兩種轉換狀態。對於單字元版本,

你可以在編譯指令後新增 "+"或「-」。對於長字元版本,你可以在編譯指令後新增

「on」或「off」。

開關編譯指令又分為全域性和區域性兩種。

全域性編譯指令影響全部的編譯內容,它必須在放在程式和單元宣告之前。

區域性編譯指令僅影響區域性的編譯內容,它的影響範圍是,直至下乙個最近的編譯指令。

它可以放在程式的任意位置。

開關編譯指令可以組合成乙個簡單的編譯指令組,中間用逗號分開,但不能有空格。

例如:引數編譯指令通過引數指定影響的的內容,引數可以為檔名或記憶體大小等。

條件編譯指令指定的條件如何編譯特定的區域段。也就是如果滿足某個條件,

則按照一種方式編譯,否則按另一種方式編譯。

所有的編譯指令(除開關編譯指令外)在名字和引數之間至少應有乙個空格。

例如:delphi編譯指令詳解(2)——排列字段型別(align fields)

type switch //開關編譯指令

syntax , , , , , or

, , , , , or

default

scope local //區域性指令

說明:指令 $a 控制delphi中的記錄型別欄位和類結構型字段。

在指令 或 狀態下,欄位是無序的,所有的記錄和類結構都被積壓在一起,無序排放。

在指令 下,記錄型的字段在宣告時沒有packed,型別結構中的字段,按位元組順序排列。

在指令 下,記錄型的字段在宣告時沒有packed,型別結構中的字段,按雙位元組順序排列。

在指令 或 下,記錄型的字段在宣告時沒有packed,型別結構中的字段,按四位元組順序排列。

在指令 $a 下,無論變數型別,常量型別,總是以最佳訪問方式排列。在 下,按最快的方式排列。

delphi編譯指令詳解(3)——注釋與編譯指令的區別與聯絡(comments and compiler directives)

注釋的內容將被編譯器忽略,除非它們是離析器函式或編譯指令。

這裡有幾種常見的注釋結構

(* 在此括號和星號之間的內容為注釋內容 *)

// 在此雙反斜線後的內容為注釋內容,此處只能為一行。.

注釋不能被巢狀。如}將不起作用,但是(*{}*)是允許的。

還有一種注釋它跟普通的注釋很像,但它有特殊的一點 以 "「,此種注釋稱為編譯指令。

如它將告訴編譯器不要產生錯誤警告資訊。

說白了 編譯指令 不是一種注釋,而是一種告訴編譯器如何編譯的指示符。

delphi編譯指令詳解(4)——應用程式型別

說明isconsole布林變數在system單元中,通過它可以檢視程式是否執行在控制台程式下或圖形介面程式下。

delphi編譯指令詳解(5)——宣告稱指令(assert directives)

type switch //開關型別

syntax or

or

default

scope local //區域性

說明$c 指令決定在delphi資源檔案中能否產生宣告**。為預設指令。

此宣告通常不用在執行時中的測試版本產品中。

delphi編譯指令詳解(6)——除錯資訊

type switch //開關型別

syntax or

or default

scope global //區域性指令

說明:$d 指令決定能否產生除錯資訊。這個資訊是由每個程序產生的乙個成員列表,

並記錄物件**位址在資源檔案中的行號。

對於單元檔案,除錯資訊記錄在和單元檔案一起的單元物件**中。

除錯資訊增加單元檔案的大小,當編譯程式編譯單元檔案是將增加而外的記憶體。

但它不影響可執行程式的大小和速度。

當乙個程式或單元檔案在狀態下被編譯,綜合除錯允許你在此模組中單步執行和設定斷點。

$d指令通常和 $l一起使用,他們能決定是否產生區域性除錯的符號資訊。

delphi編譯指令詳解(7)——庫檔案與共享物件

type parameter //引數編譯指令

syntax $libprefix 'string'

$libsuffix 'string'

$libversion 'string'

defaults $libprefix 'lib' or $soprefix 'bpl'

$libsuffix ' '

$libversion ' '

scope global //區域性指令

說明:$libprefix 指令可以覆蓋 預設的 'lib' 或 'bpl'輸出檔案字首。例如你可以指定

對於乙個設計時間包,你可以使用下面的指令去所有的字首。

$libsuffix 指令新增乙個指定的字尾(在擴充套件明之前)到輸出檔名中。

例如,使用

新增到something.pas中,將產生

something-2.1.3.dll 檔案

$libversion指令新增乙個二層擴充套件(在原副檔名之後)到輸出檔名中。例如使用

在something.pas中將產生

libsomething.dll.2.1.3 檔案

delphi編譯指令詳解(8)——定義指令

type conditional compilation //條件指令

syntax

根據乙個給定的名字設計乙個delphi條件符號。這個符號需要在此模組中已經宣告和驗證,

或者在中已經出現。如果 此名字已經定義則將失效。

delphi編譯指令詳解(9)——描述指令

type parameter //引數

syntax

scope global //區域性

說明字串不能超過256個位元組。此描述對於終端使用者一般是看不到的。標誌你的執行檔案,

通過描述性文字,版本和版權資訊,將對你的終端使用者有意。

delphi編譯指令詳解(10)——else指令

type conditional compilation //條件指令

syntax

說明:此指令位於之後, or 之前,是編譯與忽略源**的界線。

Delphi 的編譯指令

1.ifdef 等同於 if defined 它們的結束分別是 endif ifend 例子中的 ver200 是 delphi 2009 的標識.begin showmessage 這是 delphi 2009 showmessage 這是 delphi 2009 end 2.ifndef 等同於...

Delphi 中的預編譯指令

delphi 中的預編譯指令 在delphi中,也有與c相似的預編譯指令,雖然該類指令只在當前的單個檔案有效 也有可能是筆者未全面了解該類指令的真正用法 但是這一類指令對於進行多版本的製作工作 如從標準版中出學習版 確實有著相當不錯的用途。一 指令介紹 1 define指令 格式 說明 用於定義乙個...

gcc編譯指令詳解

一 gcc編譯流程 1.預處理階段 gcc e hello.c o hello.i 說明 1 o 輸出檔案 指定輸出檔案 2 e 只執行編譯預處理 該階段是讀取標頭檔案的內容,並把相應的內容插入到源 預處理結束後停止編譯過程。cat hello.i less 檢視 2.編譯階段 gcc s hell...