Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反馈:C++开发者已经切换到VS2010?_C++_Visual Studio 2008_Visual Studio 2010_Development Environment - Fatal编程技术网

反馈:C++开发者已经切换到VS2010?

反馈:C++开发者已经切换到VS2010?,c++,visual-studio-2008,visual-studio-2010,development-environment,C++,Visual Studio 2008,Visual Studio 2010,Development Environment,我正在考虑将我们的店铺从VS2008sp1迁移到VS2010。我对2008年很满意,但我想在我们的代码中使用TR1 我对2010年版的格式塔非常感兴趣。2008年,而不是解决以下任何一个元素 然而,我在转换我们的项目和解决方案的过程中,我发现噪声与信号的比率相当低,IMO。到目前为止,我正在重新布线每个项目,我们必须摆脱各种明显虚假的Microsoft Build警告,例如$TargetText。。。与链接器的OutputFile属性值不匹配 这个消息有几个变体,每个项目有几个,我们有大约75个

我正在考虑将我们的店铺从VS2008sp1迁移到VS2010。我对2008年很满意,但我想在我们的代码中使用TR1

我对2010年版的格式塔非常感兴趣。2008年,而不是解决以下任何一个元素

然而,我在转换我们的项目和解决方案的过程中,我发现噪声与信号的比率相当低,IMO。到目前为止,我正在重新布线每个项目,我们必须摆脱各种明显虚假的Microsoft Build警告,例如$TargetText。。。与链接器的OutputFile属性值不匹配

这个消息有几个变体,每个项目有几个,我们有大约75个项目。我几乎不想或根本不想浪费时间重做所有这些项目输出目标显然MSBuild坚持链接器的目标和编译器的目标是相同的,这对我们来说既不必要也不可取

此外,我们仍然使用VSS。就在我最初尝试使项目符合MSBuild时,我发现VS2010中的VSS接口的速度大约是2008年的1/4。这太糟糕了,我已经习惯了VSS的相对较差的性能

叹息。。。我知道大约1/2或更多的答案将是停止使用VSS。是的,这是个好主意,我们可能会在不远的将来迁移到subversion。但一次只能做一件事。这只解决了VSS速度问题,而不是MSBuSE问题,也没有解决新的C++问题。 新的标准库和TR1之类的东西似乎破坏了我们的一些代码。这本身并不太令人震惊——如果不是这样的话,我会感到惊讶。但就目前情况而言,错误消息是looonnnngggg——这让我想起了我早期尝试使用STL的日子,并且不得不加载一个错误字符串解析器帮助程序,该程序为我推导出了更高级别的名称,这样错误消息就会变得有些有用。10年后的今天,我又回到了诊断的深奥和复杂,以至于毫无意义,我也不知道真正的问题是什么。在一种情况下,我试图在多重映射中插入新元素:

typedef CCimexDataSource::CategoryID                        CategoryID;
typedef std::multimap<CString, CCimexDataSource *>          description_sources_multimap;
typedef std::map<CategoryID, description_sources_multimap>  category_sources_map;
// attempt to insert a new description->CCimexDataSource* keyed by CategoryID (an unsigned)
m_category_sources_map[it->GetCategory()].insert(std::make_pair(it->GetDescription(), &(*it)));
我得到:

1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(163): error C2440: 'initializing' : cannot convert from 'const CCimexDataSource *' to 'CCimexDataSource *'
1>          Conversion loses qualifiers
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(255) : see reference to function template instantiation 'std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,const CCimexDataSource>(_Other1 &&,_Other2 &&)' being compiled
1>          with
1>          [
1>              _Ty1=const CString,
1>              _Ty2=CCimexDataSource *,
1>              _Ty=ATL::CStringT<char,StrTraitMFC<char>>,
1>              _Other1=ATL::CStringT<char,StrTraitMFC<char>>,
1>              _Other2=const CCimexDataSource *
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xmemory(208) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2>::pair<ATL::CStringT<BaseType,StringTraits>,const CCimexDataSource*>(std::pair<ATL::CStringT<BaseType,StringTraits>,const CCimexDataSource *> &&)' being compiled
1>          with
1>          [
1>              _Ty1=const CString,
1>              _Ty2=CCimexDataSource *,
1>              BaseType=char,
1>              StringTraits=StrTraitMFC<char>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xmemory(280) : see reference to function template instantiation 'void std::allocator<_Ty>::construct<std::pair<_Ty1,_Ty2>>(std::pair<const _Kty,CCimexDataSource> *,_Other &&)' being compiled
1>          with
1>          [
1>              _Ty=std::pair<const CString,CCimexDataSource *>,
1>              _Ty1=ATL::CStringT<char,StrTraitMFC<char>>,
1>              _Ty2=const CCimexDataSource *,
1>              _Kty=CString,
1>              _Other=std::pair<ATL::CStringT<char,StrTraitMFC<char>>,const CCimexDataSource *>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xtree(592) : see reference to function template instantiation 'void std::_Cons_val<std::allocator<_Ty>,_Ty,std::pair<_Ty1,_Ty2>>(_Alloc &,std::pair<const _Kty,CCimexDataSource> *,std::pair<_Ty1,_Ty2> &&)' being compiled
1>          with
1>          [
1>              _Ty=std::pair<const CString,CCimexDataSource *>,
1>              _Ty1=ATL::CStringT<char,StrTraitMFC<char>>,
1>              _Ty2=const CCimexDataSource *,
1>              _Alloc=std::allocator<std::pair<const CString,CCimexDataSource *>>,
1>              _Kty=CString
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xtree(755) : see reference to function template instantiation 'std::_Tree_nod<_Traits>::_Node *std::_Tree_val<_Traits>::_Buynode<_Ty>(_Valty &&)' being compiled
1>          with
1>          [
1>              _Traits=std::_Tmap_traits<CString,CCimexDataSource *,std::less<CString>,std::allocator<std::pair<const CString,CCimexDataSource *>>,true>,
1>              _Ty=std::pair<ATL::CStringT<char,StrTraitMFC<char>>,const CCimexDataSource *>,
1>              _Valty=std::pair<ATL::CStringT<char,StrTraitMFC<char>>,const CCimexDataSource *>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\map(364) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2> std::_Tree<_Traits>::insert<_Ty>(_Valty &&)' being compiled
1>          with
1>          [
1>              _Ty1=std::_Tree_iterator<std::_Tree_val<std::_Tmap_traits<CString,CCimexDataSource *,std::less<CString>,std::allocator<std::pair<const CString,CCimexDataSource *>>,true>>>,
1>              _Ty2=bool,
1>              _Traits=std::_Tmap_traits<CString,CCimexDataSource *,std::less<CString>,std::allocator<std::pair<const CString,CCimexDataSource *>>,true>,
1>              _Ty=std::pair<ATL::CStringT<char,StrTraitMFC<char>>,const CCimexDataSource *>,
1>              _Valty=std::pair<ATL::CStringT<char,StrTraitMFC<char>>,const CCimexDataSource *>
1>          ]
1>          c:\users\steve\projects\cimex cad-cam\14.0\cimex application\cimcad\formaddautomaticpage.h(17) : see reference to function template instantiation 'std::_Tree_iterator<_Mytree> std::multimap<_Kty,_Ty>::insert<std::pair<_Ty1,_Ty2>>(_Valty &&)' being compiled
1>          with
1>          [
1>              _Mytree=std::_Tree_val<std::_Tmap_traits<CString,CCimexDataSource *,std::less<CString>,std::allocator<std::pair<const CString,CCimexDataSource *>>,true>>,
1>              _Kty=CString,
1>              _Ty=CCimexDataSource *,
1>              _Ty1=ATL::CStringT<char,StrTraitMFC<char>>,
1>              _Ty2=const CCimexDataSource *,
1>              _Valty=std::pair<ATL::CStringT<char,StrTraitMFC<char>>,const CCimexDataSource *>
1>          ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(163): error C2439: 'std::_Pair_base<_Ty1,_Ty2>::second' : member could not be initialized
1>          with
1>          [
1>              _Ty1=const CString,
1>              _Ty2=CCimexDataSource *
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\utility(167) : see declaration of 'std::_Pair_base<_Ty1,_Ty2>::second'
1>          with
1>          [
1>              _Ty1=const CString,
1>              _Ty2=CCimexDataSource *
1>          ]

注意:上述内容似乎改变了std::set的工作方式,因此它们总是返回常量迭代器,而不是迭代器1。但关键是要举一个例子,说明编译器诊断与2008年相比要复杂得多

我的问题是:对于最近出现的转换的C++商店来说,你后悔转换了吗?还是欣赏了?怎么会这样

1斯科特·迈耶有效STL,c 2001,第95页,第22项

我刚刚遇到了这样一个问题:它涵盖了我遇到的许多破坏代码的更改:

回答第一个问题:&*的类型可能是const CCimexDataSource*,而不是CCimexDataSource*

要对第二个讨论问题提供意见,请执行以下操作:
我们已经从VS2008转换到了VS2010,它运行得很好,虽然VS2010速度较慢,但它的智能感知更好一些。转换不是完全自动的,之后我们必须手动更新vcxproj文件。

在工作中,我们从VS2005迁移到VS2010,没有任何问题。然而,我发现在我的家用电脑上,我不得不关闭VS2010中的许多Intellisense功能,因为它消耗了我笔记本电脑上太多的处理能力,以至于我一次只能键入几个字符,然后必须等待3分钟才能更新数据库。如果您在Windows7上运行的是一台相当新的四核~3GHz、内存至少为6GB的机器,那么性能问题应该很少。如果你喜欢我在家,在XP上使用2 GB RAM的Core2Duo,你会发现你必须关闭许多功能,IDE才有用


注:VS2008在我的笔记本电脑上运行得非常出色;升级时我相当失望。

我的家用PC Core2Duo E6600没有问题,2 GB RAM带有intellisense。我唯一不喜欢的是UI的响应性。非常缓慢


我相信TR1和C++0x的改进超过了缓慢UI的缺点。

我尝试用100个项目转换我们的解决方案VS2005,在更新项目文件失败之后,我决定暂时放弃,因为我甚至无法开始编译它

在新的.net项目中使用VS2010,我发现IDE试图更像Eclipse,但它一直在做一些愚蠢的事情,比如在我上次单击的视图部分打开代码文件,比如输出或监视变量窗口


我经常会遇到MS symbol服务器的问题,专门用于MS symbol服务器的调试/模块功能似乎可以解决这一问题,并节省了处理symbol服务器列表的时间。

我对2008年非常满意,但希望在代码中使用TR1。提示:调试时
g编译错误,关闭并行生成。将来自多个构建过程的行交错在一起,使得本已令人困惑的任务几乎不可能完成。然后,关注错误消息的第一行。如果你的回答是肯定的,我知道你编译器不能这么做。你为什么要这么做?请看一下上下文转储。在本例中,它表示您需要一个可写的CCIMEXDATASURCE*,但提供了一个只读常量CCIMEXDATASURCE*。这是某种常量迭代器吗?问题不在于VS2010,而是你的代码。因此,您暂时逃脱了一个非法构造…现在是时候支付piper.const_迭代器而不是迭代器了是的。这解决了我提出的一个C++问题,但我希望能深入了解2010。例如:Set似乎已更改为强制其所有迭代器都为常量迭代器,即使在显式使用my_Set::iterator时也是如此。在我看来,到目前为止,这些诊断方法的可读性远远低于2008年。这是一个肤浅的学习曲线,值得吗?或者这只是冰山一角,我们的软件需要大量的学习曲线和更改才能符合要求?@Mordachai:如果您通过const引用传递容器,则不能使用mycontainer::iterator s。例如,const std::vector::begin返回一个const_迭代器,而不是迭代器。修改存储在集合中的对象总是会破坏集合不变量。您需要删除旧值并插入新值,以便在新哈希下找到它。@Billy-谢谢,但即使代码是:CCimexDataSourceManager::iterator it=m_data_manager.begin;我也犯了同样的错误。在我们使用std::set的代码中,到处都会出现类似的错误。似乎集合现在被迫返回常量迭代器而不是迭代器?TR1更改?@Mordachai:您可能希望对不影响哈希值的成员使用可变修饰符。可能您需要购买一台新的、功能更强大的笔记本电脑。@Lemuel:我同意,但我无法证明在建造一台目前正在建造的新的高功能台式机的同时有足够的资金。有很多关于运行VS2010的抱怨,尤其是XP上的express edition,它必须使用少于4GB的RAM运行。智能感知是问题的主要原因。禁用它可以使产品可用,尽管VS2008根本没有这个问题,因此让新软件运行更像是一种黑客行为,而不是解决问题的实际方法。