草庐IT

c++ - 错误的 "control reaches end of non-void function"gcc 警告怎么办?

$catt.cppintsign(inti){if(i>0)return1;if(i==0)return0;if(i我该怎么办?停止使用-Wall,因为它显然是错误的?最后加个假的return0?用“else”子句使代码困惑? 最佳答案 如果您不想添加“else”子句,因为它们会使代码变长,那么您可能想删除最后的“if”并使代码更短:intsign(inti){if(i>0)return1;if(i==0)return0;return-1;//i或者,如果您真的是在自己计算“符号”,而这并不是某个较长示例的简化:intsign(in

c++ - 在 OS X 上使用 MacPorts GCC 调试问题

对于使用GCC4.7MacPortsbuild编译的程序,我似乎无法获得可读的调试输出。我已经尝试过GDB6.3和GDB7.3,每个都有自己的问题。尝试使用GDB7.3(MacPorts)在GDB7.3中,我在启动时得到以下输出:$ggdb./testGNUgdb(GDB)7.3Copyright(C)2011FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,tothe

c++ - gcc 4.8 中静态 constexpr 成员数组的初始化

当使用-std=c++11时,以下代码在gcc4.9.1和clang-3.6中编译和运行:structBar{intx;};structFoo{staticconstexprBarbars[]={1,2,3};};constexprBarFoo::bars[];但是在gcc4.8.3中失败,导致报错./cpptest.cpp:14:43:error:couldnotconvert'1'from'int'to'constBar'staticconstexprBarbars[]={1,2,3};^./cpptest.cpp:14:43:error:couldnotconvert'2'fro

c++ - 为什么 gcc 在按值传递微不足道的结构时会发出不需要的内存访问?

众所周知,一些没有非平凡复制构造函数和非平凡构造函数的小结构在寄存器中传递。引用ARMProceduralCallStandard:Fundamentaltypeslargerthan32bitsmaybepassedasparametersto,orreturnedastheresultof,functioncalls.Whenthesetypesareincoreregistersthefollowingrulesapply:Adouble-wordsizedtypeispassedintwoconsecutiveregisters(e.g.,r0andr1,orr2andr3)

c++ - GCC 可以像 VS 一样产生结构/类名不匹配吗?

我想让GCC发出警告,当VisualStudio发现一个名称已用class和struct声明时,它会发出警告。(警告4099)这通常是由前向声明引起的,例如:structBase;...classBase{...};在这种情况下,VS实际上无法链接,因此我已将警告升级为错误。由于这个项目是跨平台的,我还想在使用GCC编译时发现这个问题——否则我可能会不小心checkin在VS中无法运行的代码。是否有任何开关或方法可以让GCC也拒绝或警告此类类/结构声明不匹配?注意:从评论来看,不确定这个警告是否合法。对于我的问题,它不相关,因为条件导致VisualStudio中的链接失败(我不能忽略警

c++ - Mingw-w64 和 TDM-GCC 一个简单的 GDI 项目的区别

我需要在Win64上为Win64(无交叉编译)构建一个简单的非商业工具(处理WindowsGDIAPI)。MinGW似乎是我的最佳选择。我以前用过32位版本,至于64位,你能告诉我以下版本之间的主要区别吗?:Mingw-w64TDM-GCC除了经典的MinGW32之外,还使用了一个简单的工具mingw-get.exe来自定义设置并跟上更新周期。现在哪个是等价的? 最佳答案 我在此处发布了MinGW/MinGW-w64/TDM-GCC的简短概述:WhatisthedifferencebetweenOrwell'sMinGWandTDM

c++ - 当 GCC 明确表示会减慢程序速度时,为什么要在 O2/O3 处启用优化?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion引自https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html:-falign-labels-falign-labels=nAlignallbranchtargetstoapower-of-twoboundary,skippinguptonbyteslike-falign-functions.Thisoptioncaneasilymak

c++ - 链接器错误 : gcc

我每次编译程序、配置和安装时都会遇到这个错误一些东西,比如binutils、textinfo等。/usr/local/bin/ld:thislinkerwasnotconfiguredtousesysrootscollect2:error:ldreturned1exitstatus我想清楚地知道这一点。什么时候会到来,实际问题是什么,如何解决? 最佳答案 如果您尝试安装一个与/usr/bin中的binutils类似的版本,您应该知道gcc使用--sysroot=/选项调用ld。ld使用默认选项从源代码构建的binutils拒绝--s

c++ - 如何获得gcc编译的每个函数的最大帧大小?

是否可以获取GCC编译的每个函数的最大帧大小?我的项目中有一堆C和C++源文件,我想统计每个函数的堆栈使用情况,只是在GCC手册中找不到任何相关选项。 最佳答案 你可以试试-fstack-usage.https://gcc.gnu.org/onlinedocs/gnat_ugn/Static-Stack-Usage-Analysis.html还有-Wstack-usage=(例如-Wstack-usage=4096),它会在您编译代码时向您发出警告。 关于c++-如何获得gcc编译的每个

c++ - 为什么这个 STL 映射的条目没有在 GCC 4.5.1 中初始化?

这是代码摘录。std::maptemp;temp[0]=.1;cout我正在使用GCC版本4.4.1进行编译,并且我从temp[1]中获得了0值,正如我所期望的那样。我的同事正在使用GCC4.5.1版进行编译。在Debug模式下(使用-g标志),他得到1000。当编译Release模式(-O2标志)时,他得到0。我的想法是,这是未初始化变量通常会出现的问题类型,除了map应该根据thisquestion调用其元素的默认构造函数之外。和其他几个人喜欢它。此外,Josuttis的C++标准库指出Ifyouuseakeyastheindex,forwhichnoelementyetexist