jjzjj

c++ - MSVC 中的模板静态定义和显式特化实例化错误

我想知道为什么下面的代码在gcc中运行得很好#includeusingnamespacestd;templatestructF{staticTconstvalue;};templatestructF{//Specializationstaticintconstvalue;};templatestructF;templateTconstF::value=sizeof(T);templateintconstF::value=42;intmain(){structFma;couthttp://ideone.com/wvrurz在MSVC2012上我无法编译它:#includeusingnam

c++ - 函数参数的析构函数在 gcc 和 MSVC 中被不同地调用

在将一些C++代码从MicrosoftVisualStudio移植到gcc时,我遇到了一个奇怪的错误,我最终将其归结为:#includeusingnamespacestd;classFoo{public:intdata;Foo(inti):data(i){cout如果我使用MicrosoftVisualStudio2015Community编译并运行上述代码,我会得到以下输出:Fooconstructedwith10movectorf.data=10Foodestructedwith10Fooconstructedwith20Foodestructedwith20Foodestruct

c++ - 用于应用程序本地部署的 MSVC 2015 通用 CRT

已宣布通用CRT将是一个可重新分发的DLL,这样应用程序本地部署仍然是可能的。我已经安装了VisualStudio2015ExpressEdition,我在SDK目录中寻找ucrtbase.dll,但找不到任何东西。我查看的目录是“C:\ProgramFiles(x86)\MicrosoftSDKs\WindowsKits\10”,但在“Microsoft.UniversalCRT.Debug”下只有CRT的调试版本。我不想从我的系统中复制任何DLL,我总是只打包来自“Redist”目录的文件。因此,例如(与以前版本的MSVC一样),我使用x86构建从“C:\ProgramFiles(

c++ - Qt msvc2013 使用 vs2015 构建

您好,我已将visualstudio更新到2015版本,并且我有Qtmsvc2013。Qt说没有编译器可以为这个版本的Qt编写代码,(Qt从visualstudio检测到编译器)。如何在不安装VS2013的情况下使其工作? 最佳答案 您不能混合使用不同主要版本的MicrosoftVisualC++编译器编译的C++。因此,您需要获取适用于VisualStudio2015的Qt版本,或者编译您自己的版本。此时,还没有针对VisualStudio2015的Qt官方构建可用(计划用于Qt5.5.15.6.0)。如果您想尝试自己编译,htt

c++ - MSVC++ 中可能的编译器错误

我相信我在MSVC++中发现了一个编译器错误(存在于VS2013中)。我想在报告之前检查它确实是一个错误。以下代码:#includeusingstd::map;templateclassA{public:typedefTStoredType;};templatemapfoo(){mapret;returnret;}templatemapfoo>(){mapret;returnret;}//Erroronthislineintmain(int,char**){return0;}产生编译错误:1>d:\documents\visualstudio2010\projects\proj\pro

c++ - 复制对象时,带有 MSVC 2010 Debug 的 OpenMP 会生成奇怪的错误

我有一个相当复杂的程序,在MSVC2010Debug模式下使用OpenMP构建时会遇到奇怪的行为。我已尽力构建以下最小的工作示例(尽管它不是真正最小的),它缩小了真实程序的结构。#include#include//AclasstakepointstothewholecollectionandapositionOnlyallowaccess//totheelementsatthatposiiton.Itprovideread-onlyaccesstoquerysome//informationaboutthewholecollectionclassElement{public:Eleme

c++ - 如何为 msvc9.0 而不是 msvc10.0 构建 boost ?

我已经运行了Bootstrap批处理,然后是bjamexe,但是由于我有MSVC2010,它会在$boost\stage\lib中生成-vc100-文件。我正在使用vc90库,所以我需要*-vc90-*文件,但是如果我将--toolset=msvc-9.0选项传递给bjam,它会给我以下错误:...failedcompile-c-c++bin.v2\libs\wave\build\msvc-9.0\release\link-static\threading-multi\instantiate_cpp_exprgrammar.obj...compile-c-c++bin.v2\libs\

c++ - 在哪里可以找到用于减小 MSVC++/Windows 上的二进制文件大小的分析器?

我有很多使用拨号的用户。另外,我要为带宽付费。我有兴趣努力让我的应用程序更小,以帮助解决这两个问题;它现在约为200k,但如果它在100-150k范围内就更好了。但是,我不知道我的二进制文件中的哪些构造和位置使用了最多的大小,这使得调整起来很困难。是否存在有助于解决二进制大小问题的免费分析器? 最佳答案 VisualStudio有一个生成映射文件的选项,该文件将显示分配给程序每个部分的地址。在项目属性中,Linker->Debugging->GenerateMapFile。 关于c++-

c++ - 如何取消引用函数指针并在 MSVC++ 下读取为数据?

下面是我尝试读取函数指针指向的机器码并打印它。目前,正在打印的数据与生成的代码不同......我已经检查了在生成的可执行文件中创建的指针的值并由反汇编程序列出(代码/调试器之间存在差异)但是不要没有看到任何太麻烦的事情,或者了解我如何解决这个问题。voiddummy();int_tmain(intargc,_TCHAR*argv[]){inti;printf("\nReadingdummy...\n");for(i=0;i 最佳答案 这里有两个常见的错误。首先,转换为unsignedchar*而不是char*。接下来,重要的是,项目

c++ - 在 MSVC 中对 void * 执行指针运算时出错

Error1errorC2036:'constvoid*':unknownsizefile.cpp111我不听。GCC从不提示void*指针运算,即使在-ansi-pedantic-Wall上也是如此。有什么问题?这是代码-structMyStruct{constvoid*buf;//Pointertobufferconstvoid*bufpos;//Pointertocurrentpositioninbuffer};...size_tsomeSize_t,anotherSize_t;MyStruct*myStruct=(MyStruct*)userdata;...if((myStru