【问题标题】:C++ Highlighting Bug?C ++突出显示错误?
【发布时间】:2014-05-30 04:26:19
【问题描述】:

编辑(对反对者):反对意味着您认为“这个问题没有显示任何研究工作;它不清楚或没有用”。如果是这种情况,我很高兴知道您可以证明这篇文章的哪一部分是合理的,请在评论中发表您的答案。谢谢。


这是我遇到的问题的一个最小示例:

#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

define 宏上面的注释说明了问题:如果我注释宏,高亮就可以了,否则似乎会导致结构定义错误高亮(见下图)。

我怀疑用于突出显示代码的 C++ 规则中存在错误,在这种情况下,我认为完全禁用 define 宏的着色(以防止它们弄乱后面代码的着色)将是一个很好的解决方案。我不知道在哪里可以找到这些规则以及如何更新它们以丢弃定义语句。

正常高亮:

疑似错误:

注意:我正在使用以下软件包:BracketHighlighter、SublimeLinter、DocBlockr、SublimeCodeIntel

【问题讨论】:

  • 代码是如何被高亮的(highlit?)
  • 是我还是这是一个意义不大的问题,已被两次投票?
  • 对不起,我看到了关闭请求,这不是一个正确的编程问题吗?我可以粘贴荧光笔的代码,如果你愿意,请问在哪里修改?
  • @RobKennedy 查看更新后的帖子,如果我有不清楚的地方请告诉我。
  • 好多了。谢谢。

标签: c++ c++11 sublimetext2 syntax-highlighting


【解决方案1】:

一般来说,突出显示 C++ 代码确实很困难。基本上,荧光笔必须几乎和编译器一样聪明。我假设 ST 正在使用正则表达式或类似的,这并不总是正确的。我已经看到它失败了很多次。

【讨论】:

  • 感谢您的回答。正如我在更新的帖子中所述,我认为完全禁用定义宏的突出显示可以解决问题,而且我个人并不真正关心宏的颜色。你知道怎么做吗?
猜你喜欢
  • 2012-03-03
  • 2010-09-30
  • 2018-09-13
  • 1970-01-01
  • 2014-01-06
  • 2021-10-25
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
相关资源
最近更新 更多