定義和取消定義符號
編譯器符號是在編譯時定義的關鍵字,可以檢查該關鍵字以有條件地執行特定的程式碼段。
有三種方法可以定義編譯器符號。它們可以通過程式碼定義:
#define MYSYMBOL
它們可以在 Visual Studio 中的專案屬性>構建>條件編譯符號下定義:
(請注意,DEBUG
和 TRACE
有自己的核取方塊,不需要明確指定。)
或者可以使用 C#編譯器 csc.exe
上的/define:[name]
開關在編譯時定義它們。
你還可以使用 #undefine
指令定義未定義的符號。
最常見的示例是 DEBUG
符號,當在除錯模式下編譯應用程式時(相對於釋出模式),它由 Visual Studio 定義。
public void DoBusinessLogic()
{
try
{
AuthenticateUser();
LoadAccount();
ProcessAccount();
FinalizeTransaction();
}
catch (Exception ex)
{
#if DEBUG
System.Diagnostics.Trace.WriteLine("Unhandled exception!");
System.Diagnostics.Trace.WriteLine(ex);
throw;
#else
LoggingFramework.LogError(ex);
DisplayFriendlyErrorMessage();
#endif
}
}
在上面的示例中,當應用程式的業務邏輯中發生錯誤時,如果應用程式在除錯模式下編譯(並且設定了 DEBUG
符號),則錯誤將寫入跟蹤日誌,並且異常將重新生成 -thrown 用於除錯。但是,如果應用程式是在釋出模式下編譯的(並且未設定 DEBUG
符號),則使用日誌記錄框架來安靜地記錄錯誤,並向終端使用者顯示友好的錯誤訊息。