草庐IT

c++ - MinGW: "gcc is not recognized as an internal or external command"

我下载并安装了MinGW。我使用图形程序安装C++编译器。在Windows命令行中键入gcc会打印:gccisnotrecognizedasaninternalorexternalcommand我检查了,gcc.exe存在于C:\MinGW\bin中。怎么了? 最佳答案 虽然是一个老问题,但这里的答案都没有帮助我。我发现到达目的地的唯一路线是在命令提示符下输入以下行:复制:设置Path=C:\MinGW\bin;%PATH%之后,只需输入gcc-v。希望这对解决我遇到的问题的人有所帮助!

c++ - GCC C++ 名称修改引用

环顾四周,我看到的主要问题是关于对C++符号进行分解,而不是如何分解它们。是的,可以调用g++,使用-S选项,在一些包含要修改的符号的虚拟代码上,然后检查生成的程序集,但我无法找到关于GCC名称修改的良好引用或规范。我能找到的最接近的地方是http://www.int0x80.gr/papers/name_mangling.pdf,但它似乎没有涵盖诸如名称模板实例如何被破坏或为什么_Z3fooIN3BarEE3FooIXT_EEv将转换为Foofoo()(虽然我可以看出是怎么回事,但到底是什么IXT_EE?为什么在N之后没有_Z?那是什么意思?)。 最佳答案

c++ - std::string 复制构造函数在 GCC 4.1.2 中不是很深?

我想知道我是否误解了什么:std::string不复制其内容的复制构造函数吗?stringstr1="HelloWorld";stringstr2(str1);if(str1.c_str()==str2.c_str())//Samepointers!printf("YouwillgetintotheIPChellverysoon!!");这将打印“你很快就会进入IPChell!!”这让我很烦。这是std::string的正常行为吗?我在某处读到它通常会进行深层复制。但是,这按预期工作:stringstr3(str1.c_str());if(str1.c_str()==str3.c_st

c++ - 综合 gnu make/gcc 教程

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于StackOverflow来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我刚开始学习C++,我发现很难找到关于如何使用gnumake/gcc的简短、全面的教程。任何想法(请不要将我指向官方的gnumake教程,它对我的​​目的来说太深入了;-))。 最佳答案 查书Man

c++ - GCC 在 lambda 函数中通过引用错误地捕获全局变量?

GCC似乎在lambda函数中通过引用错误地捕获全局变量,即使它们被指定为“按值捕获”。此代码将编译并打印“a=9”:#includeinta=10;intmain(){[=](){a=9;}();std::cout虽然这段代码不会编译:#includeintmain(){inta=10;[=](){a=9;}();//error:assignmentofmember'main()::::a'inread-onlyobjectstd::cout但是通过值显式捕获全局然后分配给它会产生错误:#includeinta=10;intmain(){[a](){a=9;}();//assigme

c++ - undefined symbol 的一般故障排除技术 - gcc

我只是想知道是否有一种有效的技术来解决gcc中undefinedsymbol。有时我的一个项目无法链接,我通常会花很多时间寻找原因。通常它是一个深深隐藏的makefile中的错字,不正确的环境变量或类似的东西。如果您的构建突然因“undefinedsymbol”而死机并且原因不明显,您会使用什么方法? 最佳答案 说这是我的开始配置:/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/crt1.o:Infunction`_start':(.text+0x18):undefinedrefe

c++ - 如何在 GCC 中弃用 C 预处理器宏?

我知道如何使用__attribute__((deprecated))或[[deprecated]]来弃用这样的函数:intold_fn()__attribute__((deprecated));[[deprecated]]intold_fn2();但是如何弃用这样的宏:#defineOLD_MACRO1 最佳答案 不错、优雅的解决方案,但取决于启用的C99(适用于gcc4.8.2或更高版本,未在早期版本上测试):#defineDEPRECATED_MACRO1_Pragma("GCCwarning\"'DEPRECATED_MACR

c++ - 如何在 gcc 中禁用尾调用优化

我想知道是否有人知道gcc禁用尾调用优化的标志。基本上在尾调用优化中,当被调用函数的返回值被传递(通过返回)或函数中没有其他事情发生时,gcc将替换堆栈帧。也就是说,在voidmain(){foo();}voidfoo(){bar();}voidbar(){/*atthispointincode,thefoo()stackframenolongerexists!*/}当foo调用bar时,gcc发出代码来替换foo的堆栈帧,而不是添加一个新的堆栈帧。我的公司有一个堆栈展开器,可以从代码中的任何位置打印出堆栈跟踪。尾调用优化使堆栈帧消失,这可能会使堆栈跟踪有些困惑。我正在使用GCC4.3

c++ - 在 OS X Yosemite 上使用 gcc 编译器编译 OpenMP 程序

$gcc12.c-fopenmp12.c:9:9:fatalerror:'omp.h'filenotfound#include^1errorgenerated.编译openMP程序时出现上述错误。我正在使用OSXYosemite。我首先尝试通过在终端中键入gcc来安装nativegcc编译器,后来也下载了Xcode,但我还是遇到了同样的错误。然后我通过以下方式下载了gcc:$brewinstallgcc我仍然遇到同样的错误。我确实尝试过更改编译器路径,但它仍然显示:$whichgcc/usr/bin/gcc那么如何用gcc编译程序呢? 最佳答案

c++ - 带有 GNU STL 的 GCC 4.8 为 std::string 构造函数生成错误代码?

所以一点C++代码:voidfunc(conststd::string&theString){std::stringtheString(theString);theString+="morestring";std::cout使用GCC4.8和VS2013可以很好地编译。根据我的C++知识,代码可以使用局部变量theString进入范围,然后从函数参数中隐藏theString。在theString构造点,范围内唯一的theString是传递给std::string构造函数的函数参数。构造的std::string然后被命名为theString,它进入范围并且是稍后在代码中使用的theStr