草庐IT

GCC_NO_COMMON_BLOCKS

全部标签

c++ - 减少 gcc 内存使用

目前我必须在非常有限的硬件(只有2GBRAM的核心i5)上构建一个相当大的项目。当使用4线程运行make时,由于每个线程占用高达40%的RAM,gcc崩溃了。我用谷歌搜索了一下,发现了这个link.一些人反馈它有效。但是,不是我。这是我的做法。/usr/bin/qmake-qt4-r-speclinux-g++$DEBUG_FLAGS-oMakefile"QMAKE_CXXFLAGS+=--paramggc-min-expand=10--paramggc-min-heapsize=8192"/home/build-srv/LargeProject/largeProject.promak

c++ - GCC - 包含编译标志的宏

GCC中是否有包含用于编译程序的编译标志的宏?我想要这样的东西:printf("Compilationflags:%s",__FLAGS__);以输出为例:Compilationflags:-02-g 最佳答案 简短回答:否。稍微长一点的答案:即使有,你的代码也会变得不可移植。需要这种功能的项目让构建系统来做,例如通过将所有标志放在make的CFLAGS变量中,并创建一个config.h规则,将所有这些标志放在中#define那里。 关于c++-GCC-包含编译标志的宏,我们在Stack

c++ - 为什么 C++17 GCC 编译器给出未定义的警告?

根据C++17,无法保证以下表达式中的求值顺序。这称为未指定的行为。inti=0;std::coutC++17GCC编译器给出以下警告:LiveDemoprog.cc:Infunction'intmain()':prog.cc:6:20:warning:operationon'i'maybeundefined[-Wsequence-point]std::cout我不明白,在上面的c++17中express不再是未定义的行为,那么为什么编译器会给出未定义的警告? 最佳答案 似乎gcc给出了警告,因为这是一个极端情况,或者至少非常接近于

c++ - gcc 6 是否支持使用 std::sample (c++17)?

我正在尝试编译这段包含std::sample的c++17代码使用gcc版本6.3.0和以下命令:g++-std=gnu++17-cmain.cpp。但我得到这个:错误:‘sample’不是‘std’的成员...#include#include#includeintmain(){std::vectora{0,1,2,3,4,5,6,7,8,9,10};std::vectorb(5);std::sample(a.begin(),a.end(),b.begin(),b.size(),std::mt19937{std::random_device{}()});return0;}gcc6是否支持

c++ - 为什么这个 SFINAE 在 gcc 中会报错?

考虑以下示例(https://godbolt.org/z/pSTUZI):#include#includetemplatestructfalsy:std::false_type{};template::value,int>::type=0>voidf(std::back_insert_iterator){}templatevoidf(T){}structS{};intmain(){Ss;f(s);}用gcc8.3或更早版本编译会报错:Infileincludedfrom/opt/compiler-explorer/gcc-8.3.0/include/c++/8.3.0/iterator

c++ - GCC 仅从 dll 导出修饰函数名称

我有一个dll,它导出一个函数...extern"C"int__stdcallMP_GetFactory(gmpi::IMpUnknown**returnInterface){}我使用Code::BlocksGCC编译器(V3.4.5)编译它。问题:生成的dll导出修饰函数名称...MP_GetFactory@4加载失败,应该是旧的...MP_GetFactory我已经为此研究了大约4个小时。我认为--add-stdcall-alias是解决此问题的选项。我的代码::block日志显示...mingw32-g++.exe-shared-Wl,--out-implib=bin\Debug

C++ 模板和 "no matching function to call"

我遇到了一个奇怪的错误。我有以下签名的功能:templatestaticboolConvertCbYCrYToRGB(constCharacteristicspace,constDATA*input,DATA*output,constintpixels){后来这样称呼:casekByte:returnConvertCbYCrYToRGB(space,(constU8*)input,(U8*)output,pixels);casekWord:returnConvertCbYCrYToRGB(space,(constU16*)input,(U16*)output,pixels);casek

c++ - 示例 XSD 失败并返回 "error: no declaration found for element X"

尽管我是xml解析领域的新手,但我能够通过xsd创建有效的c++并成功编译和链接,但是编译器优化了(?)离开实例化。所以,从第一步开始,我尝试helloworldxmlexampleatCodeSynthesis.但这失败了:[wally@lenovotowerxml]$makehelloxsdcxxcxx-treehello.xsdg++-c-ohelloschema.ohello.cxxg++-g-ohello-lxerces-chelloschema.ohello.c++[wally@lenovotowerxml]$./hellohello.xml:2:8error:nodecl

c++ - 我是否需要做一些特别的事情来让我的 C++ 程序使用 gcc 进行编译?

为什么当我键入g++program_name时,我的程序编译得很好,没有警告,但是当我键入gccprogram_name时,却出现满屏的undefinedreference错误...我经常使用标准库,这里是我的包含:#include#include#include#include#include#include#includeusingnamespacestd;我问的原因是我花了所有时间为codeeval.com挑战开发解决方案。它在用g++编译时完美运行,但不能用gcc编译。长话短说,当codeeval尝试运行我的东西时,我得到0分(!),尽管我不知道他们将如何测试提交......他

c++ - 将特定的 gcc 警告变成错误

所以我知道我可以使用-Werror=...将警告变成错误,但我想将以下警告变成错误:“类xxx有虚函数但非虚析构函数”据我所知,您遇到此错误的唯一方法是打开过于讨厌的-Weffc++标志。有没有一种方法(或者-Weffc++中这个警告的子标志是什么)只打印这个警告然后把它变成一个错误?谢谢! 最佳答案 -Wnon-virtual-dtor是-Weffc++开启的特定警告名称。要将任何警告变成错误,您可以使用-Werror=...。因此,如果警告是-Wspam,则将其变成错误将是-Werror=spam。所以在这种情况下,您将使用-W