2017-04-04 57 views
0

我想要一種具有「全局預處理器定義」的方法,以便在編譯之前更改單個值以添加或刪除程序的功能。目前,我有consts如 「全局腳本」(被稱爲God.cs):如何在一個地方進行全局預處理器定義而不需要很多警告?

public const bool PRINT_RUN_VALUES = true; 
public const bool DEBUG_MOVEMENT = false; 
public const bool DOUBLE_SPEED = false; 

使用這些值的所有相關的腳本,例如:

腳本1:

if (God.PRINT_RUN_VALUES) { 
    float averageDist = /* calculate values */ 
    print("Script1: averageDist = " + averageDist); 
} 

腳本2:

if (God.PRINT_RUN_VALUES) { 
    print("Script2: radius = " + radius); 
    print("Script2: time = " + time); 
} 

這種方法的問題是,我得到噸的

CS0162:無法訪問的代碼檢測

警告。我可以通過關閉這些警告:

#pragma warning disable 0162 
#pragma warning disable 0429 

但我不想這樣做,因爲這些警告可能的情況下非常有用不涉及從God.cs.這些值另一種可能是使用傳統的預處理器定義,如:

#define PRINT_RUN_VALUES 
... 
#if (PRINT_RUN_VALUES) 
    float averageDist = /* calculate values */ 
    print("Script1: averageDist = " + averageDist); 
#endif 

但是據我知道,需要我在每個.cs文件的開頭添加「的#define PRINT_RUN_VALUES」,這將成爲一場噩夢當我想快速關閉或在這些全球性聲明。我希望所有這些全局定義都是一個地方,以便我可以快速關閉它們。

如何定義一些預處理器事物,使其不包含在每個腳本中?我知道有符合這個標準的proprocessor定義,比如定義來檢查什麼操作系統正在編譯這個軟件。或者有另一種解決方法嗎?

+0

您可以在項目屬性中設置這些,這是如何定義DEBUG的。 – DavidG

+0

所以你不會真正理解這個警告,以及這種非常糟糕的做法會如何陷入困境。你真的*想知道什麼?你想知道不方便的事實嗎?還是你不想提醒你不知道什麼? –

回答

1

您可以在項目屬性中設置它們,例如這是如何定義DEBUG符號。右鍵點擊你的項目,選擇屬性並在框中輸入您的自定義csymbols標記條件編譯符號

Project properties

現在在我的代碼,我可以這樣做:

#if CHEESE 
    public string CheeseName = "Gouda"; 
#endif 

請注意,這些符號被定義爲配置的一部分。這意味着您可以爲釋放定義不同的符號,例如爲調試或UAT環境定義。

+0

謝謝你,先生 – danglingPointer

相關問題