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...