1. 程式人生 > >delphi的常用條件編譯指令---{$IFDEF} {$UNDEF}{$IFDEF}{$ELSE}{$ENDIF}

delphi的常用條件編譯指令---{$IFDEF} {$UNDEF}{$IFDEF}{$ELSE}{$ENDIF}

1.DELPHI的編譯指令

格式:{$指令 滿足指令的條件}  

對於Delphi來說﹐左右大括號之間的內容是批註﹐然而「{$」(左括號後緊接著貨幣符號)對於Compiler(編譯器)而言並不是批註﹐而是寫給Compiler看的特別指示,就是編譯指令。編譯指令時給計算機看的,用於區別在不同的場合下進行編譯不同程式碼的檔案。

網上搜了一下編譯指令的用處,寫的挺不錯,拿來分享下:

1.協助除錯

    穩健熟練的程式設計師經常會在開發應用系統的過程中﹐特別加入一些除錯程式或者回饋驗算的程式﹐這些除錯程式對於軟體品質的提升有極其正面的功能。然而開發完成的正式版本中如果不需要這些額外的程式的話﹐要想在一堆程式中找出哪些是除錯用的程式並加以刪除或設定為批註﹐不僅累人﹐而且容易出錯﹐況且日後維護時這些除錯程式還用得著。
    此時如果能夠應用像是$IFDEF的Compiler Directives ﹐就可以輕易的指示Delphi要/不要將某一段程式編進執行檔案中。 
    同時﹐Compiler本身也提供了一些錯誤檢查的開關﹐可以預先對程式中可能的問題提醒程式設計師注意﹐同樣有助於撰寫正確的程式。

2.版本分類

    除了上述的除錯版本/正式版本的分類之外﹐對於像是「試用版」「普及版」「專業版」的版本分類﹐也可以經由Compiler Directive的使用﹐為最後的產品設定不同的使用許可權。其它諸如「中文版」「日文版」「國際標準版」等全球版本管理方面﹐同樣也可以視需要指示Delphi特別連結哪些資源檔或者是採用哪些適當的程式。以上的兩則例子中﹐各版本間只需共享同一份程式程式碼即可。
    Delphi 1.0 與 Delphi 2.0有許多不同之處﹐元件資原始檔(.DCR)即是其中一例﹐兩者的檔案格式並不相容﹐在您讀過本文之後﹐相信可以寫出這樣的程式﹐指示Delphi在不同的版本採用適當的資原始檔以利於元件的安裝。

{$IFDEF WIN32} 
{$R XXX32.DCR} 
{$ELSE} 
{$R XXXX16.DCR} 
{$EDNIF}
指令分為三種:1.開關指令  2.條件指令 3.引數指令

現在分享下條件指令,其他的等待研究!

定義:條件指令(Conditional directives) 
指示Compiler在編譯的過程中, 按我們設定的條件, 選擇性的採用/排除不同區域的程式程式碼。以下是一個條件編譯的例子, 第一與第三列是寫給Compiler看的,指示 Compiler在 __DEBUG這個條件名稱完成定義的情況才編譯ShowMessage()這列程式;反之, 如果 __DEBUG 當時沒有定義的話, 這段程式幾乎與批註無異, Compiler對它將視而不見。 
 

{$IFDEF __DEBUG} 
ShowMessage(IntToStr(i)); 
{$ENDIF}
一些常用的條件編譯指令
條件編譯指令    含義 

   $DEFINE //用於定義一個條件符號,一旦定義,條件符號就為真 

   $ELSE   //與$IFDEF配合使用,如果$IFDEF條件為假,則只對原始檔$ELSE後一小部分進行編譯 

   $ENDIF   //結束一個以$IF開始的條件段 

   $IFDEF   //對條件符號進行判斷,為真則編譯原始檔 

   $IFNDEF //對條件符號進行判斷,為假則編譯原始檔 

   $IFOPT   //根據編譯開關狀態,對原始檔編譯 

   $UNDEF   //撤消以前的條件符號定義