VS2012如何通过智能感知显示标准c++库的文档



我几天前开始用Visual Studio 2012学习c++。我习惯于用IntelliJ IDEA编程Java,在调用方法时,你总是会看到文档和预期的参数。是否有一种方法也可以在VS2012中为c++做到这一点?

如果我理解正确的话,由于智能感知,这应该已经显示出来了但如果我调用向量或字符串的成员函数它只会显示如下内容:

public: std::vector<std::string, std::allocator<std::string>>::const_iterator std::vector<std::string, std::allocator<std::string>>::begin() const

但是没有指明返回什么,期望什么,这个函数做什么。我只是错过了文档文件吗?

任何帮助都非常感谢!

智能显示了返回的确切类型。如果您想知道如何使用这种类型,请尝试在cppreference中搜索,这是一个非常有用的STL资源

据我所知,visual Studio甚至在2019版本中也没有这个功能(没有尝试2022,但我想它也没有)。我认为这可能有两个原因:

    c++比Java复杂得多。历史问题太多了。它最初并没有设计文档注释语法。
  • 标准库使用得太频繁,你应该记住它的API。没什么好记的,对吧?

当注释是氧格式时,一些ide可以向您显示提示。我知道VS Code和Qt Creator的c++插件。也许Visual Studio也可以做到这一点?但是visual Studio的STL实现不使用氧。

另外,如果使用模板,不要期望理解类型名称的含义,因为会有一些类型名称像这样🤣:

struct boost::fusion::vector<class boost::spirit::lex::lexertl::iterator<class boost::spirit::lex::lexertl::functor<struct boost::spirit::lex::lexertl::token<class std::_String_iterator<class std::_String_val<struct std::_Simple_types<char> > >,struct boost::mpl::vector<__int64,struct String,struct Symbol,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na>,struct boost::mpl::bool_<1>,unsigned __int64>,class boost::spirit::lex::lexertl::detail::data,class std::_String_iterator<class std::_String_val<struct std::_Simple_types<char> > >,struct boost::mpl::bool_<1>,struct boost::mpl::bool_<1> > > & __ptr64,class boost::spirit::lex::lexertl::iterator<class boost::spirit::lex::lexertl::functor<struct boost::spirit::lex::lexertl::token<class std::_String_iterator<class std::_String_val<struct std::_Simple_types<char> > >,struct boost::mpl::vector<__int64,struct String,struct Symbol,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na>,struct boost::mpl::bool_<1>,unsigned __int64>,class boost::spirit::lex::lexertl::detail::data,class std::_String_iterator<class std::_String_val<struct std::_Simple_types<char> > >,struct boost::mpl::bool_<1>,struct boost::mpl::bool_<1> > > const & __ptr64,class boost::spirit::lex::lexertl::iterator<class boost::spirit::lex::lexertl::functor<struct boost::spirit::lex::lexertl::token<class std::_String_iterator<class std::_String_val<struct std::_Simple_types<char> > >,struct boost::mpl::vector<__int64,struct String,struct Symbol,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na,struct boost::mpl::na>,struct boost::mpl::bool_<1>,unsigned __int64>,class boost::spirit::lex::lexertl::detail::data,class std::_String_iterator<class std::_String_val<struct std::_Simple_types<char> > >,struct boost::mpl::bool_<1>,struct boost::mpl::bool_<1> > > const & __ptr64,struct boost::spirit::info const & __ptr64>

正如这个答案所说,在您提供的示例中,Intellisense 提供了完整的函数签名,尽管由于返回值和函数名之前添加了完全限定的类型名(std::vector<std::string, std::allocator<std::string>>),因此在视觉上很难解析。在这里,将类型替换为T:

public:
T::const_iterator T::begin() const

在Visual Studio中没有太多的文档可以直接使用,但是微软确实有很好的在线资源,例如VS2015 vector类

很难遍历所有模板和std命名空间,但是返回类型是vector<string>::const_iterator

我听Stephan Lavavey(微软STL的维护者)提到,如果有些东西不能编译,他希望有更好的错误消息。也许这也会使智能感知更容易使用。

最新更新