2014-04-15 65 views
1

編輯(downvoters):downvoting意味着你認爲「這個問題沒有顯示任何研究工作;它不清楚或沒有用」。如果是這種情況,我很樂意知道你可以在這篇文章中找到哪個部分,請在評論中發表你的回答。謝謝。C++突出顯示Bug?


這裏是我遇到的問題的一個小例子:

#ifndef __ST2_HIGHLIGHT_TEST__ 
#define __ST2_HIGHLIGHT_TEST__ 

// This define makes the highlighting fail 
#define create_obj(name, val) obj<decltype(val)> name(val) 

template <typename T> 
struct obj 
{ 
    obj(const T& val): var(val) {} 
    T var; 
}; 

#endif 

上述定義的宏解釋該問題的評論:如果我評論的宏,突出顯示是好的,否則它似乎導致結構定義被錯誤地突出顯示(見下面的圖片)。

我懷疑用於突出顯示代碼的C++規則中的一個錯誤,在這種情況下,我認爲完全禁用了宏的着色(爲了防止它們混淆後續代碼的着色)是一個好的解決方案。我不知道在哪裏可以找到這些規則,以及如何更新它們以放棄定義語句。

普通高亮:

enter image description here

可疑的錯誤:

enter image description here

注:我使用的是下面的包:BracketHighlighter,SublimeLinter,DocBlockr,SublimeCodeIntel

+0

代碼如何被突出顯示(高亮?) – templatetypedef

+0

是我還是這意味着更少的問題,已被upvoted兩次? – atoMerz

+0

對不起,我看到關閉請求,這是不是一個適當的編程問題?我可以粘貼熒光筆的代碼,並詢問如果你想要修改它的位置? – Sheljohn

回答

2

突出顯示C++代碼通常非常困難。基本上,熒光筆必須像編譯器一樣聰明。我假設ST正在使用正則表達式或類似的東西,這並不總是正確的。我看到它多次失敗。

+0

感謝您的回答。正如我更新後的文章所述,我認爲完全禁用突出定義宏可以解決問題,而且我個人並不真正關心宏的着色。你知道如何做到這一點嗎? – Sheljohn