编辑(对于downvoters):downvoting暗示你认为“这个问题没有显示任何研究工作;它不清楚或没有用处”。如果是这种情况,我很高兴知道您可以就这篇文章证明哪一部分合理,请在评论中发表您的回答。感谢。
以下是我遇到的问题的最小示例:
#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 ++规则中存在一个错误,在这种情况下,我认为完全禁用define
宏的着色(为了防止它们弄乱代码的颜色)以下)将是一个很好的解决方案。我不知道在哪里可以找到这些规则以及如何更新它们以丢弃定义语句。
正常突出显示:
疑似错误:
注意:我使用的是以下软件包:BracketHighlighter,SublimeLinter,DocBlockr,SublimeCodeIntel
答案 0 :(得分:2)
一般来说,突出显示C ++代码非常困难。基本上,荧光笔必须几乎和编译器一样聪明。我假设ST正在使用regexps或类似的,这并不总是正确的。我已经看过很多次了。