![](/img/trans.png)
[英]Windows Phone 8 preprocessor directive doesn't apply to mixed solution
[英]#if preprocessor directive doesn't always collapse
假設我定義了兩個 #define 預處理器指令:
#define TEST
#define TESTOFF
現在我的代碼組織在 TEST 和 TESTOFF #if 指令中,例如:
#if TEST
...
#endif
...MORE CODE...
#if TESTOFF
...
#endif
經常發生一個#if
區域,比如#if TEST
區域,變得可折疊而另一個( #if TESTOFF
區域)不可折疊。
由於這是一個有些人可能從未遇到過的奇怪現象,因此我將附上有關問題的快照:
有誰知道什么參數定義了#if
預處理器指令的這種行為?
如果#If
測試為假,那么顯然其中的所有代碼(無論其結構如何)都是死代碼。 提供折疊這些部分是有意義的。
如果#If
測試為真,則其中可能包含任意代碼。 所以折疊選項是基於代碼結構的。 並且在任意#If
測試中不提供折疊。
Damien_The_Unbeliever 的評論是正確的。 VS 為當前設置無效的部分(顯示為灰色的部分)提供折疊功能,而不為活動部分提供折疊功能。 所以如果我有這個代碼:
#if DEBUG
string a = "2";
string b = "3";
#else
string a = "3";
string b = "3";
#endif
當調試配置處於活動狀態時,底部將是可折疊的,但如果我將其切換到 Release,頂部將變得可折疊(而底部不可折疊)。
作為解決折疊問題和/或個人偏好的簡單解決方法,值得注意的是,您可以將任何代碼塊括在大括號 {} 中,VS 將使其成為可折疊區域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.