草庐IT

c++ - 标准库容器在 GCC 中生成大量右值拷贝

我正在为linux和windows编写一个应用程序,并注意到GCC构建对复制构造函数产生了很多无用的调用。这是产生这种行为的示例代码:structA{A(){std::coutvec_a(3);}这个测试只创建一个包含3个元素的vector。我期望3个默认构造函数调用和0个拷贝,因为没有A左值。在VisualC++2010中,输出为:defaultmovedefaultmovedefaultmove在GCC4.4.0(MinGW)中,(-O2-std=c++0x),输出为:defaultcopycopycopy发生了什么,我该如何解决?实际类(class)的拷贝很昂贵,默认构造和移动很

c++ - Win-builds 与 MinGW-builds 之间的区别

有人知道Win-builds之间的区别吗?和MinGW-builds?我对适用于Windows的C++11(14)编译器非常感兴趣,但不幸的是MSVC尚未完全兼容C++11。 最佳答案 区别很简单:他们的目标略有不同。特别是,如果您想在Windows上进行开发(即不需要交叉编译),那么您最好使用MinGW-builds项目,它本质上提供了MinGW-w64工具链的几个功能丰富的变体。链接中的表格很好地总结了我正在谈论的功能。您基本上可以根据您对寻址模型、线程模型、异常模型的要求来选择编译器。我认为它成熟稳定,因为我在日常工作中使用它

c++ - Win-builds 与 MinGW-builds 之间的区别

有人知道Win-builds之间的区别吗?和MinGW-builds?我对适用于Windows的C++11(14)编译器非常感兴趣,但不幸的是MSVC尚未完全兼容C++11。 最佳答案 区别很简单:他们的目标略有不同。特别是,如果您想在Windows上进行开发(即不需要交叉编译),那么您最好使用MinGW-builds项目,它本质上提供了MinGW-w64工具链的几个功能丰富的变体。链接中的表格很好地总结了我正在谈论的功能。您基本上可以根据您对寻址模型、线程模型、异常模型的要求来选择编译器。我认为它成熟稳定,因为我在日常工作中使用它

c++ - MinGW 应用程序的崩溃报告

我有一个使用MinGW编译的c++应用程序,我收到了客户的崩溃投诉。因此,除了大量记录可能崩溃的部分(在发布新版本之前)之外,我一直在寻找一个崩溃报告器,它可以帮助我在出现错误时找出堆栈跟踪和任何其他有用的调试信息。是否存在与MinGW应用程序兼容的此类工具?(似乎then编译器和崩溃报告策略之间存在密切关系,因此问题。有任何Windows工具可以帮助我吗?该应用程序主要在WindowsXP机器上运行。能够将信息写入文件对于我的目的来说已经足够了。然后我可以让我的客户将信息邮寄给我。我一直在研究google-breakpad和SetUnhandledExceptionFilter,但我

c++ - MinGW 应用程序的崩溃报告

我有一个使用MinGW编译的c++应用程序,我收到了客户的崩溃投诉。因此,除了大量记录可能崩溃的部分(在发布新版本之前)之外,我一直在寻找一个崩溃报告器,它可以帮助我在出现错误时找出堆栈跟踪和任何其他有用的调试信息。是否存在与MinGW应用程序兼容的此类工具?(似乎then编译器和崩溃报告策略之间存在密切关系,因此问题。有任何Windows工具可以帮助我吗?该应用程序主要在WindowsXP机器上运行。能够将信息写入文件对于我的目的来说已经足够了。然后我可以让我的客户将信息邮寄给我。我一直在研究google-breakpad和SetUnhandledExceptionFilter,但我

c++ - Windows 上的 Clang

首先,我关注了"GettingStarted:BuildingandRunningClang".特别是,我根据“使用VisualStudio”部分构建了它。换句话说,我是使用VisualStudio2010构建的。其次,我手动设置了MinGW分发的包含和库路径:我正在尝试编译的简单程序:#includeusingnamespacestd;intmain(){cout我从编译器得到以下反馈:InfileincludedfromC:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\iostream:39:InfileincludedfromC:\MinGW\

c++ - Windows 上的 Clang

首先,我关注了"GettingStarted:BuildingandRunningClang".特别是,我根据“使用VisualStudio”部分构建了它。换句话说,我是使用VisualStudio2010构建的。其次,我手动设置了MinGW分发的包含和库路径:我正在尝试编译的简单程序:#includeusingnamespacestd;intmain(){cout我从编译器得到以下反馈:InfileincludedfromC:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\iostream:39:InfileincludedfromC:\MinGW\

c++ - MinGW SEH 和 MinGW SJLJ 有什么区别?

我刚刚开始学习C并现在安装QTx64(在此处填写:http://tver-soft.org/qt64)。我有两个安装选项:MinGW4.9.2SEH或MinGW4.9.2SJLJ。问题:哪个更好安装?为什么?我读到Whatisdifferencebetweensjljvsdwarfvsseh?和https://wiki.qt.io/MinGW-64-bit#Exception_handling:_SJLJ.2C_DWARF.2C_and_SEH但什么都不懂(C和编译器语言的新手)。 最佳答案 SJLJ和SEH是两种不同的异常处理系统

c++ - MinGW SEH 和 MinGW SJLJ 有什么区别?

我刚刚开始学习C并现在安装QTx64(在此处填写:http://tver-soft.org/qt64)。我有两个安装选项:MinGW4.9.2SEH或MinGW4.9.2SJLJ。问题:哪个更好安装?为什么?我读到Whatisdifferencebetweensjljvsdwarfvsseh?和https://wiki.qt.io/MinGW-64-bit#Exception_handling:_SJLJ.2C_DWARF.2C_and_SEH但什么都不懂(C和编译器语言的新手)。 最佳答案 SJLJ和SEH是两种不同的异常处理系统

c++ - 我怎样才能让 C++0x 和 __STRICT_ANSI__ 相处融洽?

我需要在项目中使用popen,但我得到:error:'popen'wasnotdeclaredinthisscope看起来GCC在-std=c++0x和(与我能找到的少量信息相反)-std下定义了__STRICT_ANSI__=gnu++0x,这会导致popen(和_popen)从stdio中删除。奇怪的是,取消定义__STRICT_ANSI__并不能解决问题,也不能前向声明函数。我显然错过了一些东西。是否有合理的解决方法?我使用4.5.0的MinGW,并升级到4.5.2,但仍然遇到同样的问题。我宁愿不用msys来编译4.6.0,但如果必须的话,我会这样做。