jjzjj

c++ - Qt Creator 2.6.1 + Qt 5 + C++11 + MSVC2010 编译器

我正在尝试使用Qt在Windows上构建C++应用。我的设置是:已安装Vs2008、2010、2012已安装Qt5RC1现在,当我#include并尝试使用std::unique_ptr时,它告诉我它没有定义,所以我查看了VS2010header,发现需要定义_HAS_CPP0X,所以我将它作为DEFINES+添加到.pro=_HAS_CPP0X这仍然没有效果,所以我ctrl+clicking#includememory只是为了找到它使用的memoryheader来自:C:\ProgramFiles(x86)\MicrosoftVisualStudio9.0\VC\include里面真

c++ - Itanium 和 MSVC ABI 中跨模块边界的 RTTI

我正在阅读ItaniumABI上面写着Itisintendedthattwotype_infopointerspointtoequivalenttypedescriptionsifandonlyifthepointersareequal.Animplementationmustsatisfythisconstraint,e.g.byusingsymbolpreemption,COMDATsections,orothermechanisms.有谁知道在使用动态加载库时如何在流行平台(例如使用GCC和GNUbinutils的Linux)上实际实现这一点的详细信息?它有多可靠?此外,我的印象

c++ - 在调试中断期间释放资源(C++、MSVC)

是否可以在调试器中停止程序时释放资源(文件锁、计时器)?更一般地说,我可以在MSVC停止程序进行调试之前和恢复执行之后执行代码吗?我想完成的事情:-在调试期间自动释放文件锁定以进行编辑。-进程恢复后自动重新加载文件-防止定时器在调试停止期间触发溢出-从计时器中减去调试花费的时间解决方法:如果我无法在程序被调试器停止之前执行代码,那么在程序中以编程方式检测调试器停止了应用程序已经很有帮助了。编辑:我查看了用于调试器集成的WindowsAPI函数,但似乎ContinueDebugEvent等函数仅适用于调试器的编写者,而不适用于被调试的进程。编辑2:似乎热修补DbgBreakPoint函数

c++ - 在什么情况下为 Qt MinGW 或 MSVC 选择什么编译器?

我从QT开始,使用windows64位我已经安装了MinGW而我没有VS。我应该选择什么版本的QT(MSVS或MinGW),目的是什么?在某些情况下,我必须选择一个而不是另一个吗?我看到MinGW的唯一Qt版本是32位,但是MinGW也支持64位,为什么?假设我想开发一个windows应用程序和一个android应用程序,我是否必须安装两个Qt版本MSVC2015和Qtforandroid? 最佳答案 你最好同时安装它们。用于开发的MinGW版本和用于发布的MSVC版本。因为来自Digia的人,他们构建了Qt版本,除了x64MinG

c++ - 如何将 Qt Creator 配置为用户 MSVC2015?

我已经使用来自官方QT站点的在线Qt安装程序安装了适用于Windows的Qt5.8SDK,支持MSVC2013x64和MSVC2015x64。因为webenginewidgets不支持MinGW编译器。但是我没有在QTCreator的构建环境配置窗口中选择编译器。但我已经安装了很多MSVC,包括MSVC2015_64和MSVC2015_32。我需要在此选项中设置什么才能从QTCreator编译程序? 最佳答案 安装VisualC++构建工具2015,但取消选中安装程序中的任何SDK。从微软网站安装windowsSDK10。安装qt5

c++ - 如何强制 MSVC 编译器省略大型临时对象的堆栈分配?

这个问题不是thisone的重复问题或其他类似问题。这个问题是关于在初始化和使用后清除一个结构。更新在阅读了您的前几条评论后,我想澄清一下我的问题:如何强制MSVC编译器省略大堆栈分配?我更新了标题、文本和下面的代码以阐明这一点。我最近开始使用/GS、/sdl和/analyze编译器选项编译我的项目。(MicrosoftVisualC++2015)使用这些选项,编译器可以正确警告有问题的代码结构。但是,我遇到了一些我一直认为是好的C++风格的警告。请看下面的示例代码:structmy_struct{charlarge_member[64000];};voiddo_something_e

c++ - 缩小转换为 MSVC 中的 bool 警告

编译这段代码时:enumB:bool{T=true};structA{boolmember;};voidfoo(constBb=T){Aa{b};//warninghere}voidbar(){constBb=T;Aa{b};}MSVC在foo中发出警告:warningC4838:conversionfrom'constB'to'bool'requiresanarrowingconversion但是编译bar没问题。这是一个proof这是编译器错误还是预期行为? 最佳答案 narrowingconversion定义的相关部分在C++

c++ - MSVC 无法识别带有模板自动参数的 constexpr 函数

我试图为值列表中的值创建一个索引元查找器。这是代码:#include#includetemplatestructValueTplList;templateconstexprintMetaFindV(intind){//notfoundcasereturn-1;}templateconstexprintMetaFindV(intind=0){ifconstexpr(std::is_same_v){returnNeedleV==V?ind:MetaFindV(ind+1);}else{returnMetaFindV(ind+1);}}//maintemplatestructMetaInde

c++ - MSVC10 中的奇怪编译器错误

我有以下代码:std::for_each(tokens.begin(),tokens.end(),[&](Token&t){staticconststd::unordered_mapmapping([]()->std::unordered_map{//MapsstringstoTokenTypeenumeratedvaluesstd::unordered_mapresult;//RESERVEDWORDresult[L"namespace"]=Wide::Lexer::TokenType::Namespace;result[L"for"]=Wide::Lexer::TokenType:

c++ - 如何防止 MSVC++ 为 switch 语句过度分配堆栈空间?

作为遗留代码库更新工具链的一部分,我们希望从BorlandC++5.02编译器转移到Microsoft编译器(VS2008或更高版本)。这是一个嵌入式环境,其中堆栈地址空间是预定义的并且相当有限。事实证明,我们有一个带有大量switch语句的函数,这会导致在MS编译器下比在Borland下分配更大的堆栈分配,实际上会导致堆栈溢出。代码的形式是这样的:#ifdefPKTS#defineRETURN_TYPESPackettypedefstruct{inta;intb;intc;intd;inte;intf;}SPacket;SPacketerror={0,0,0,0,0,0};#else