草庐IT

c++ - Boost 确实减慢了 VS2005 上的编译速度

我最近开始在我的C++项目中使用Boost,并注意到在编译开始之前有相当大的延迟(当我点击重新构建时,我必须等待5分钟才能开始编译)。我已经运行了Filemon,它向我显示VisualStudio一直处于空闲状态,devenv.exe正在通过Boost包含目录进行探测。有什么想法可以在不将Boost从项目中移除的情况下加快编译速度吗?谢谢。 最佳答案 您可能直接将boost包含目录添加到“项目设置>C/C++>常规>附加包含目录”。VisualStudio会跟踪项目依赖项,以便在发生更改时提供最少的重新编译(这与IntelliSen

C++ Array vs Vector 性能测试解释

很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visitthehelpcenter.9年前关闭。为了量化类似C的数组和C++中Vectors的性能差异,我编写了这个小程序。https://github.com/rajatkhanduja/Benchmarks/blob/master/C%2B%2B/vectorVsArray.cpp为了在共同点上比较它们,我决定测试随机访问和顺序访问。我添加了迭代器,只是为了比较它们(但这不是问题的重点)。对于具有7.7GBRAM且数组/vector大小为1

c++ - VS2012 上的 decltype 内没有 ADL

我刚刚意识到尝试通过decltype获取函数的返回类型不涉及VS2012上的ADL(参数依赖查找)(使用cl.exeV17.00.60610.1测试)。下面的例子#include#includenamespaceA{intFunc(voidconst*){printf("A::Func(voidconst*)\n");return0;}templatevoidDo(Tconst&t){Func(&t);}templatevoidPrintType(Tconst&t){printf("Type:%s\n",typeid(decltype(Func(&t))).name());}}name

c++ - 如果 Visual Studio 2012 抛出 VS2012 不应存在的编译错误,这意味着什么?

当我编译一些使用boost序列化的类时,出现编译错误C2996,请参阅下面的消息本身。如果我查找此错误,似乎此错误仅由更旧版本的编译器引发。怎么会这样?错误信息:E:\Lib\boost_1_54_0\boost/serialization/split_member.hpp(42):errorC2996:'boost::hash_combine':recursivefunctiontemplatedefinitionVS2013、VS2012以及VS2012Update4显示了此行为。 最佳答案 我遇到了类似的问题。在我看来,这就像

c++ - LNK2019 (VS 2008) 使用模板函数指针完整实现模板函数

以下最少的代码可以在GNUC++中正常编译和链接:#include//Simplefunctiontemplatevoidfoo(Ta,void*=0){std::coutclasskernel{public://Functiondispatchertemplateinlinestaticvoidapply(Mt){Function(t,0);}};intmain(){kernel::apply(5);//foo(5,0);}但在VisualStudio2008中会产生错误errorLNK2019:VerweisaufnichtaufgelöstesexternesSymbol""vo

c++ - VS2013 - 静态常量已经定义

我有以下代码(已简化),它在gcc中编译良好,但在VS中出错://main.cpp#include"test.h"intmain(){return0;}//test.h#pragmaonceclassTest{staticconstintTEST=3;};//test.cpp#include"test.h"constintTest::TEST;错误:main.obj:errorLNK2005:"private:staticintconstTest::TEST"(?TEST@Test@@0HB)alreadydefinedintest.obj这是VS错误还是gcc错误地允许我明确定义静态

c# - C#'s readonly vs C++' s const - 等价物

这主要是一个理解检查,因为我找不到关于这个主题的完整引用。在C#中,当我编写readonlyFoomyFoo时,我实际上是在说myFoo是指向Foo的指针,并且指针不能被重新分配。保证底层Foo无法重新分配,我需要一个完整的其他类或接口(interface)ImmutableFoo.现在考虑构造List.它基本上是指向指向Foo的指针列表的指针。,即类似于vector*在C++中。您可以在三个地方放置const在C++中。constvector*constconst#1:您不能修改vector(通过调整大小、重新分配元素等)const#2:你不能修改指向vector内部的Foo-sco

VS CUDA OpenCV编程 遇到gpu端核函数 应输入表达式的报错解决办法

文章目录前言一、报错二、解决办法1.操作2.外部调用总结前言最近在做开发时,用到了cuda和opencv结合的使用方法。其中,cuda能够提供的公式就那么多,所以打算自己写一个核函数来实现自己想要实现的算法。结果遇到了>>核函数调用的时候报错,提示应输入表达式。经过在网上查找,大家的解决办法基本上都说在cu文件中出现没事,可以通过。但是我这个就没法通过,经过最后的排查,找到了解决办法。一、报错报错例如如下代码“swap_image_kernel>>(src,dst,h,w);”就会报错为应输入表达式,因为编译器把这个当作C++的符号了。extern"C"voidswap_image(cuda:

c++ - dynamic_cast vs static_cast 无效*

在下面程序的最后两行中,static_cast和dynamic_cast表现不同。据我了解,dynamic_cast的结果始终解析为完整对象的地址。所以它以某种方式使用了RTTI。谁能解释一下编译器如何使用RTTI来区分两者。#includeusingnamespacestd;classTop{protected:intx;public:Top(intn){x=n;}virtual~Top(){}friendostream&operator(&b)(&b);cout(p)(p)可能的输出:https://ideone.com/WoX5DI281,2,3,40xbfcce60410xbf

c++ - WINAPI C/C++ -> 为什么二进制文件的大小会急剧增加? (从 VS2013 切换到 VS 2015)

即使我知道我可能会因为问这个问题而受到抨击,但我仍然会继续问这个问题,因为它真的让我抓狂。我希望你们中的某个人可能对此事有所了解。在VS2013上编译MS的WIN32默认('非空'设置)项目产生一个二进制大小~16kb。在VS2015Update3上编译同一个项目会产生大约105kb的二进制大小(大6倍多!)。我对传递给cl.exe和link.exe的最终命令行参数进行了双重和三次检查,它们看起来完全相同(项目设置)。即使更改项目设置-大小优先于速度-也无济于事(二进制文件仍然是105kb)。这里到底发生了什么?我什至在第二台计算机上安装了VS2015,以排除“有缺陷”的安装——结果相