Tag: visual c ++

你如何减less编译时间和Visual C ++项目(本地C ++)的链接时间?

你如何减less编译时间和VC ++项目(本地C ++)的链接时间? 请指定每个build议是否适用于debugging,释放或两者。

std :: vector :: swap invalidate迭代器吗?

如果我交换两个向量,它们的迭代器是否仍然有效,现在只是指向“其他”容器,或迭代器是否失效? 也就是说,给出: using namespace std; vector<int> x(42, 42); vector<int> y; vector<int>::iterator a = x.begin(); vector<int>::iterator b = x.end(); x.swap(y); // a and b still valid? Pointing to x or y? 这似乎没有提到这一点: [n3092 – 23.3.6.2] void swap(vector<T,Allocator>& x); 效果:将* this的内容和容量()与x的内容和容量()交换。 请注意,因为我在VS 2005中,我也对迭代器debugging检查等的影响感兴趣(_SECURE_SCL)

托pipec + +和c + +之间的区别

主题标题实际上是我的问题。 第二个问题是:我什么时候使用这两个中的哪一个?

size_t vs int警告

我总是遵循以下types的代码警告。 std::vector v; for ( int i = 0; i < v.size(); i++) { } warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data 我明白size()返回size_t ,只是想知道这是安全的忽略这个警告,或者我应该让所有我的循环variables的size_ttypes

怪异的MSC 8.0错误:“ESP的值没有正确保存在一个函数调用…”

我们最近试图将我们的一些Visual Studio项目拆分成库,并且一切似乎都在一个testing项目中编译和构build,其中一个库项目作为依赖项。 但是,试图运行该应用程序给了我们下面的令人讨厌的运行时错误消息: 运行时检查失败#0 – ESP的值在函数调用中未正确保存。 这通常是调用用不同调用约定声明的函数指针的结果。 我们甚至从来没有为我们的函数指定调用约定(__cdecl等),使所有编译器开关保持默认状态。 我检查了一下,项目设置对于在库和testing项目中调用约定是一致的。 更新:我们的一个开发人员将“基本运行时间检查”项目设置从“Both(/ RTC1,equiv。to / RTCsu)”更改为“Default”,运行时间消失,程序运行显然正常。 我完全不信任这个。 这是一个合适的解决scheme,还是一个危险的黑客?

如何build立一个Linux的Visual C ++项目?

build立(用于Linux)C ++应用程序是用Visual Studio编写的最好和最简单的方法是什么? 代码本身就绪 – 我只使用跨平台的库。 是否有可能在Windows下在Visual Studio中准备一切,然后在Linux下使用CLI工具来构build它? 有没有文件描述这个? 编辑:一些更多的信息: 使用的libs:stl,wxwidgets,boost,asio,cryptlib。 非常less的Linux知识。 编辑#2:我select了以下解决scheme:使用kdevelop创build新项目并编译所有内容。

在一个大的C ++遗留应用程序中查找“死代码”

我目前正在开发一个在我之前有许多开发者的大而古老的C ++应用程序。 项目中有很多“死代码”,类和function已经不再被任何人使用。 C ++有哪些工具可用于分析大代码库来检测和重构死代码? 注意:我不是在谈论像gcov这样的testing覆盖工具。 你如何在你的项目中find死代码?

Visual Studio Express 2010许可证

我可以使用Visual C ++ 2010 Express编译器进行商业用途吗? 据我所知,在2010版本之前,它总是被允许的,但是现在当我启动IDE时,它会写“仅用于评估目的”。 我无法在任何地方find完整的许可证文件(不是安装的文件,而不是谷歌),所以我有疑问,我应该使用它,还是应该降级到MSVC ++ 2008版本。

在C ++中转换为bool的性能影响是什么?

[这个问题与这个问题有关,但不一样。] 我的编译器警告将某些types隐式转换或转换为bool,而显式转换不会产生警告: long t = 0; bool b = false; b = t; // performance warning: forcing long to bool b = (bool)t; // performance warning b = bool(t); // performance warning b = static_cast<bool>(t); // performance warning b = t ? true : false; // ok, no warning b = t != 0; // […]

C / C ++:如何使用do-while(0); 没有编译器警告像C4127构造?

我经常在我的#defines中使用do-while(0)构造,出于在这个答案中描述的原因。 另外我试图尽可能使用编译器提供的警告级别来捕捉更多的潜在问题,并使我的代码更加健壮和跨平台。 所以我通常使用-Wall与gcc和/Wall与MSVC。 不幸的是MSVC抱怨do-while(0)构造: foo.c(36) : warning C4127: conditional expression is constant 我应该怎么做这个警告? 只需全局禁用所有文件? 对我来说这似乎不是个好主意。