有没有一个能够很好地处理模板的C++集成开发环境(IDE)?

13

我试过的所有 IDE 在使用与模板相关的东西时都无法提供代码自动完成功能。例如,

boost::shared_ptr<Object> ptr;
ptr->[cursor is here]

在这种情况下是否有提供代码补全功能的集成开发环境(IDE)?

9个回答

7
Visual Studio搭配Visual Assist X可以处理这种情况,但在更复杂的代码中仍然会出现失败。

6

实际上,这是一个相当简单的模板使用案例,Qt Creator可以轻松处理此类模板代码和更复杂的模板代码。


1
它在boost::static_pointer_cast<DerivedClass>(baseClassObject)->[光标在此处]失败,其中baseClassObject的类型为BaseClass,DerivedClass是从BaseClass派生而来。但无论如何,它目前是最好的。 - Mad Fish
1
你总会发现在一个特定的IDE中可以工作的情况,在另一个IDE中却不能。问题是什么在大多数情况下有效。Qt Creator是一个不断发展的IDE,而且是免费的。我也非常确定,如果你提出一个关于特定情况的错误,比如你提到的boost::static_pointer_cast,它将得到解决。 - Idan K
“是一个不断发展的IDE”和“实际上是一个好的IDE”之间有什么联系呢?如果它正在不断发展,那只意味着它可能有一天会变得很好,但这绝对不意味着它现在就是好的。 - jalf
这里的问题不是什么是“好”的IDE。作者想要一个能处理特定模板代码的IDE,Qt Creator 可以做到。我的评论仅仅是想表明,如果有 Qt Creator 处理不了的东西,很可能会被修复,因为它正在进行大规模的开发。不像其他的IDE(如VS)需要花费数年时间才能修复一些问题。 - Idan K

3

2
你好,
顺便说一下,我强烈推荐Scott Meyers的优秀书籍“Effective STL”。
其中第49条“学习解读与STL相关的编译器诊断”就值得一读!其中的信息也适用于解码除STL以外的复杂模板相关诊断,例如Boost。
祝玩得开心。
另外,对于这个有趣的问题给出一个+1的评价。
谢谢。

1

Eclipse加上CDT插件可以很好地处理这个问题,就像其他提到的工具一样。


1
不,它不会。我刚刚检查过了。它只会给出本地变量列表。 - Mad Fish

1

Visual Studio 2010在这个领域有了显著的改进。正在进行公开测试版,你应该去试试。


我现在已经使用了一个月的vs2010(beta),我必须同意! - Matthieu N.

1

这在Eclipse CDT中有效,但您可能需要在项目->属性->C/C++常规->路径和符号下显式设置包含路径。在我的环境下,我不得不深入挖掘并明确添加include\c++\4.2.1和include\c++\4.2.1\m68k-elf。仅指定目录到交叉编译器根目录\include是无法使内容辅助工作的。当然,一旦添加了目录,请重新构建索引。

如果Windows->首选项->C/C++->索引缓存限制设置过小,则可能需要检查它们并将其增加。我将我的设置为最大256MB。


0

0

Netbeans有时候会做得很好,但并不总是如此。它是非确定性的: seemingly相似的代码可能会被解析,也可能不会,这取决于IDE的心情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接