草庐IT

c++ - VS2012 "Generating Code"大型硬编码数组速度慢

我们有一个工具可以在头文件中生成一个类,该文件是用硬编码数组生成的。自动生成的值由使用自动生成值的实际实现继承。自动生成的示例:classMyTestAutoGen{std::vectorm_my_parameter1;std::vectorm_my_parameter2;...public:MyTestAutoGen(){SetDefaultValueFor_my_parameter1();SetDefaultValueFor_my_parameter2();...}voidSetDefaultValueFor_my_parameter1(){inttmp[]={121,221,33

c++ - std::function 签名指针 vs 指针引用 = 没有区别?

这是代码示例:#include#includestructFoo{};typedefboolfunc_type(Foo*&,conststd::string&);typedefstd::functionFunctionalType;boolf(Foo*,conststd::string&){}intmain(){#if1func_type*func;func=f;#elseFunctionalTypef2;f2=f;#endif}如您所见,我已将“对指针的引用”声明为第一个参数的函数类型Foo*&,我希望该函数仅以“指针”作为第一个参数Foo*不能分配给这种类型的变量。#if1regi

c++ - VS 编译警告 : result of 32-bit shift implicitly converted to 64 bits

VisualStudio2013发出恼人的(看似无关紧要的)编译警告:#include#definePRECISION16uint64_thi=0;for(uint8_ti=0;i这是编译警告:warningC4334:'改1好像解决了至1.所以我一直在尝试找出1中可能出现的问题.显然,如果i>=PRECISION,那么左移操作将产生未定义的行为。但是,变量i不超过PRECISION-1的值.此外,即使我们假设编译器无法推断出这个事实,我也看不出这个编译警告与左移操作数导致的潜在未定义行为有什么关系。也许它假定PRECISION-1-i的无符号值可以大于31。但是我应该如何告诉编译器它

c++ - CMake:如何在安装了 VS2017 的情况下指定 VS2015.3 工具集

我安装了VS2017,同时安装了VS2017(v141)和VS2015.3(v140)工具集。我需要使用CMake生成一个解决方案,我希望CMake被“愚弄”,就像安装了VS2015一样,这样我就可以使用v140工具集构建项目。我知道这个问题可能与以下问题重复:Howcmakespecify"PlatformToolset"foraVisualStudio2015project?但它提供的解决方案对我没有帮助。错误信息是:SelectingWindowsSDKversion10.0.14393.0totargetWindows10.0.15063.TheCcompileridentif

c++ - 修改嵌套lambda中捕获的参数 : gcc vs clang?

从clang切换到gcc时,我遇到了一个奇怪的行为。clang编译成功,gcc报错。这是重现该行为的最小示例。我已经尝试使用c++14和c++17以及多个clang和gcc版本。谁在这里,clang还是gcc?structA{intvalue;};automakeCallback(constA&a){autocallback=[aCopy=a](inti){[aCopy,i]()mutable{aCopy.value=i;}();};returncallback;}编辑:将外部lambda更改为mutable,解决了gcc上的问题。 最佳答案

c++ - VS2005、VS2008下C++生成的EXE速度; VS2010编译器

当我从VS6升级到VS2005时,我发现在默认编译设置下我的国际象棋引擎程序的速度提高了10%。想知道一般情况下是否也是如此,以及从那时起对MSC++编译器的最终输出进行了哪些改进(如果有的话)。 最佳答案 关于从2010之前的VC++版本迁移到VC++2010+:如果您大量使用STL容器和算法,升级到VC++2010+可能会提供显着超过10%的改进,因为VC++2010+实现了C++11的移动语义。我记得关于Boost的一个特定帖子声称从VC++2008迁移到VC++2010后,他们的应用程序性能提高了900%的邮件列表:[boo

c++ - : returnType vs returnType &?这几种形式有区别吗

考虑这些免费的独立功能:std::vector&f();//referencestd::vectorg();//value/*const*/std::vector&f1=f();//referencestd::vectorf2=f();//value/*const*/std::vector&g1=g();//referencestd::vectorg2=g();//value有什么区别:f()和g()。这是一个简单的问题,但我仍然希望听到一些关于它们的详细评论,因为这可能有助于理解下一个问题的答案。f1和f2。它们是来自f()的同一个原始对象,还是f2是原始对象的拷贝?取消注释cons

c++ - VS2008 传递变量 - 结构与结构组件 - 优点/缺点?

我真的希望这不是那些super基本的问题之一。无论如何,我有一个包含47个组件的结构,我正在调用各种函数,这些函数一次使​​用3到10个这些组件。这样调用函数是否更好:foo(pParam->variable1,pParam->variable2,pParam->variable3)或foo(pParam)然后在函数中使用pParam->variable1;pParam->变量2;pParam->variable3;?提前致谢! 最佳答案 你应该通过引用传递结构,这样你就不需要复制所有的值:voidfoo(mySturctpPara

c++ - VS2010 中的 "redefinition; different type modifier"

我正在尝试编译我在visualstudio中下载的一些代码。该代码适用于msvc6,我将其导入VS2010。该代码用于通过编译一个DLL来为labview提供ASIO支持。见here对于整个代码。构建时出现以下错误:“错误C2373:‘_pctype’:重新定义;不同的类型修饰符。”代码片段如下:unsignedshort_Ints[512];unsignedshort*_pctype=_Ints;如果有人要从我提供的链接中引用代码包,这是来自文件GenMonCIN.c 最佳答案 错误消息试图告诉您_pctype已在其他地方定义。它

C++ 代码在 g++ 和 vs2008 中得到不同的结果

#include#include#includeusingnamespacestd;structExmpl{Exmpl(){coutevec(3);deletep;return0;}在g++(4.4.3)中编译时我得到了Exmpl()Exmpl(constExmpl&)~Exmpl()Exmpl()operator=(constExmpl&)~Exmpl()Exmpl()Exmpl()Exmpl(constExmpl&)Exmpl(constExmpl&)Exmpl(constExmpl&)~Exmpl()~Exmpl()~Exmpl()~Exmpl()~Exmpl()~Exmpl()