繁体   English   中英

哪些IDE和文本编辑器可以推断出在C ++ 11中使用auto关键字声明的变量类型

[英]Which IDEs and text editors can deduce type of variables declared using auto keyword in C++11

“几乎总是自动”一文中,Herb Sutter列出了使用auto关键字声明变量的几个原因。

他说实际变量类型可以由IDE自动推导出来,并通过将鼠标悬停在变量名称上来显示。

我想知道哪些IDE和文本编辑器(或插件)目前支持“自动”变量类型演绎。

编辑:

来自答案的IDE列表:

  • Visual Studio 201x
  • 日食
  • Qt Creator 2.7.0
  • KDevelop 4.5.1

文字编辑

那么Vim,Emacs,Sublime Text等等 - 有插件支持类型演绎吗?

Visual Studio 2010,Visual Studio 2012和Visual Studio 2013支持使用auto关键字声明的变量的类型推导。 这适用于IntelliSense工具提示以及自动完成建议。

从Visual Studio 2010开始,C ++ IntelliSense支持已完全重写(请参阅重建Intellisense )。 IntelliSense现在由Edison Design Group(EDG) C ++编译器前端驱动 无论EDG能做什么,您都会看到IntelliSense中的反映。

请注意,IntelliSense工具提示将显示auto变量的基础类型。 它不会再次处理树并用适当的typedef替换部分。 在Visual Studio 2012上,以下代码

std::string str;

std::string::iterator i1 = str.begin();
auto i2 = str.begin();

将迭代器显示为

std::basic_string<char,std::char_traits<char>,std::allocator<char> >::iterator i1

std::_String_iterator<std::_String_val<std::_String_base_types<char,std::allocator<char> >::_Val_types>::_Myt> i2

考虑到我很高兴不同意Herb Sutter的评估,即IDE足以在您需要时推断出类型。 auto在稳健性,正确性和灵活性方面非常出色,但肯定无法满足开发人员在大型代码库上工作的需求。

原生支持

  • Visual Studio 2010+
    • 警告 :使用typedef表现不佳; 看到iinspectable的答案
  • KDevelop 4.5.1+
    • 警告 :一些不正确的推论(例如浮动文字); 看约翰尼的回答
  • Qt Creator 2.7.0+
  • Eclipse(不确定是否通过插件或本机)

通过插件支持


注意:这个答案的初稿是通过简单地组合现有答案和Eclipse注释,然后添加关于Vim的注释来创建的。 如果没有这样的“汇总”答案,这个问题(及其现有答案)似乎违反了“一个正确的答案”规则。

这应该真的被格式化为表格; 太糟糕了,我们在这里没有这种能力。

KDevelop 4.5.1还支持类型扣除。 虽然它可能会犯很小的错误。

例子:

auto i = 3;    // Deduces int
auto d = 3.0;  // Deduces double
auto f = 3.0f; // Deduces double - wrong

从这个测试源代码判断, Qt Creator 2.7.0也可以做到:

class A
{
    void f();
};

int main()
{
    auto a = A();
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM