2012-05-17 75 views
8

假設我在C#下面的代碼:防止Visual Studio編輯器#ENDIF

void Func() { 
    int i=3; 

    #if DEBUG 
    ... 
    #endif 

    for (int j=0;j<i;j++) { 
     ... 
    } 
} 

如果我使用Edit->Advanced->Format document,它就會被重新格式化爲這個(使用我當前的代碼格式設置) :

void Func() 
{ 
    int i = 3; 

#if DEBUG 
    ... 
#endif 

    for (int j = 0; j < i; j++) 
    { 
     ... 
    } 
} 

是否有辦法防止#if#endif線被移動到最左邊?我無法找到這些設置,但我希望有一個註冊表設置來控制它的工作原理。

任何建議將不勝感激 - 這種行爲讓我瘋狂,因爲我的代碼有幾百個這樣的塊,他們不斷被VS破壞。

+11

它格式非常好:)#語句不是代碼的一部分,所以他們不應該縮進。 –

+3

這是你的偏好。當你有數百個(平均每個功能5-9個)時,這使得閱讀代碼變得非常困難。幾乎不可能找到功能的開始/結束。 – xxbbcc

+5

這是一個建議 - http://msmvps.com/blogs/peterritchie/archive/2011/11/24/if-you-re-using-if-debug-you-re-doing-it-wrong.aspx – hatchet

回答

0

在工具/選項下,深入到文本編輯器/ C#/選項卡。在該設置頁面上,將縮進從智能更改爲阻止。這將停止預處理器行的縮進,並取消其他功能。我不是高手足夠該設置告訴你什麼其他格式的東西,你會輸球,但是這給一般的想法:我一直在使用被添加的空間這樣的#標籤 http://www.blackwasp.co.uk/VSTabs.aspx

+0

謝謝,我已經使用塊格式化製表符。它仍在發生。 – xxbbcc

+0

@xxbbcc我明白你的意思了。 Block會將其留在您鍵入的位置,但如果您專門進行了重新格式化,則它們會丟失任何縮進。 – hatchet

+0

是的,不幸的是,我從來沒有能夠阻止這種情況發生。 – xxbbcc

2

一種風格

void Func() 
{ 
    int i = 3; 

# if DEBUG 
    ... 
# endif 

    for (int j = 0; j < i; j++) 
    { 
     ... 
    } 
} 

..the如果塊看起來像它一字排開的代碼正確,並重新格式化代碼不動的預處理器標籤。

+0

@ com3lius:我現在只看到你的建議,謝謝 - 我會試試看。我不確定是否喜歡它,但它仍然看起來比屠宰佈局更好。 – xxbbcc