C# #if、#endif和預處理指令
阿新 • • 發佈:2020-09-12
目錄
- #if、#else、#eif、#endif
- if這幾個的用法和if-else語句差不多,都是如果滿足條件則會執行。但不同的是這裡往往使用的是預處理指令。
- #define、#undef
- define需要放在using之前使用
- define 指令不能用於宣告常量值
- 系統內建預處理指令總結
#if、#else、#eif、#endif
以前自己做開發的時候,沒有怎麼用過C#的#if之類的預處理指令。實習了之後,發現專案中C#程式碼部分用了很多預處理指令。所以學習了一下。
if這幾個的用法和if-else語句差不多,都是如果滿足條件則會執行。但不同的是這裡往往使用的是預處理指令。
舉個小栗子:使用系統內建指令
//VS會在編寫程式碼時就自動判斷出將會執行哪個程式碼塊,並把不會執行的置灰。(VS牛批!!!)
//當遊戲處於編輯器階段即還未釋出時。(可以在VS中改變除錯的模式為Release)
#if DEBUG
Debug.Log("當前是編輯器模式");
#else
Debug.Log("當前不是編輯器模式");
#endif
#define、#undef
使用#define我們可以自定義指令。
使用#undef可以取消定義的指令。
注意:
-
define需要放在using之前使用
-
define 指令不能用於宣告常量值
舉個小栗子:自定義指令
//定義放在using之前
#define TEST
using ***
//執行程式碼部分
#if TEST
//當我們註釋掉定義時,VS中程式碼塊內容也會自動置灰
Debug.Log("你好呀");
#endif
系統內建預處理指令總結
官網地址:https://docs.unity3d.com/2019.1/Documentation/Manual/PlatformDependentCompilation.html
Unity支援的平臺#define指令如下:
從Unity 2.6.0開始,你可以有選擇地編譯程式碼。可用的選項取決於您正在編輯的編輯器的版本。給定版本號XYZ(例如,2.6.0),Unity公開以下格式的三個全域性#define指令:UNITY_X,UNITY_X_Y和UNITY_X_Y_Z。
從Unity 5.3.4開始,您可以根據Unity編譯或執行給定程式碼所需的最早版本的Unity來選擇性地編譯程式碼。給定與上述(XYZ)相同的版本格式,Unity 將以UNITY_X_Y_OR_NEWER格式公開一個全域性#define ,可用於此目的。