草庐IT

c++ - 与外部库链接时出现 GCC "multiple definition"错误

我正在尝试使用一个库(Watt-32,如果相关),但由于某种原因无法链接。我已经编译了这个库,作为一个快速的“helloworld”测试,我正在尝试编译以下文件:#includeintmain(){sock_init();}这会导致GCC在库自己的源文件中生成长多重定义错误列表:D:\projects\test-tcp>c++-Iincludetest-tcp.cpp-Llib-lwattlib\libwatt.a(rs232.o):Infunction`_ntohl':D:\msys64\home\JW\watt32\src/../inc/sys/swap.h:63:multiple

c++ - 用于 Arduino IDE (xtensa-lx106-elf-gcc) 和 std::map 链接错误的 ESP8266

是否可以将ESP8266的map用于Arduino包?这是我的代码:#includetypedefstd::mapItems;voidsetup(){Itemsitems;items[2]=5;//items.emplace(4,5);}voidloop(){}这是编译/链接错误:Arduino:1.6.5(Windows8.1),Board:"GenericESP8266Module,Serial,80MHz,40MHz,DIO,115200,512K(64KSPIFFS)"sketch_oct31a.cpp.o:Infunction`loop':C:\ProgramFiles(x8

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是否支持

ARM实验-C语言主程序调用ARM子程序

一、实验名称:C语言主程序调用ARM子程序二、实验目的:了解ARM应用程序框架。了解ARM汇编程序函数和C语言程序函数相互调用时,遵循的ATPCS标准;了解和掌握C语言程序调用ARM语言程序函数的基本方法;了解和掌握C语言程序调用ARM汇编程序函数的参数传递过程;掌握内联汇编和嵌入式汇编的编程方法。三、实验原理:ARM工程由于C语言便于理解,有大量的支持库,所以它是当前ARM程序设计所使用的主要编程语言。对硬件系统的初始化、CPU状态设定、中断使能、主频设定以及RAM控制参数初始化等C程序力所不能及的底层操作,还是要由汇编语言程序来完成。在应用系统的程序设计中,若所有的编程任务均用汇编语言来完

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++ - 我是否需要做一些特别的事情来让我的 C++ 程序使用 gcc 进行编译?

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