瑣碎的例子

{$DEFINE MyRuntimeCheck} // Comment out this directive when the check is no-longer required!
                         // You can also put MyRuntimeCheck in the project defines instead.

   function MyRuntimeCheck: Boolean;  {$IFNDEF MyRuntimeCheck} inline;  {$ENDIF}
   begin
      result := TRUE;
      {$IFDEF MyRuntimeCheck}
        // .. the code for your check goes here
      {$ENDIF}
   end;

這個概念基本上是這樣的:

定義的符號用於開啟程式碼的使用。它還會停止明確內聯的程式碼,這意味著將斷點放入檢查例程更容易。

然而,這種結構的真正美妙之處在於你不再需要支票了。通過註釋 $ DEFINE (在它前面放置’//’),你不僅會刪除檢查程式碼,還會開啟例程的內聯,從而從你呼叫的所有位置中刪除任何開銷例程! 編譯器將完全刪除所有檢查痕跡(假設內聯本身設定為 OnAuto,當然)。

上面的示例基本上類似於斷言的概念,你的第一行可以根據用途將結果設定為 TRUE 或 FALSE。

但是你現在也可以自由地使用這種構造方式來執行跟蹤日誌記錄,指標等等。例如:

   procedure MyTrace(const what: string);  {$IFNDEF MyTrace} inline;  {$ENDIF}
   begin
      {$IFDEF MyTrace}
        // .. the code for your trace-logging goes here
      {$ENDIF}
   end;
...
MyTrace('I was here');   // This code overhead will vanish if 'MyTrace' is not defined.
MyTrace( SomeString );   // So will this.