草庐IT

c++ - 我怎样才能用 GNU g++ 只编译标准 C++?

GNUg++编译器中有一些扩展,例如VLA(可变长度数组),即使这些功能不是C++标准。因此,如果我需要仅使用C++标准构造来编译程序并避免那些额外的扩展,我可以使用GNUg++来完成吗?像g++test.cpp-std=onlyStandards这样的东西? 最佳答案 传递-pedantic-errors标志。请务必使用-std=设置标准,例如-std=c++14。这也适用于clang。 关于c++-我怎样才能用GNUg++只编译标准C++?,我们在StackOverflow上找到一个

c++ - clang 和 g++ 在处理 const 对象时的差异

这个问题在这里已经有了答案:Whydoesgccallowaconstobjectwithoutauser-declareddefaultconstructorbutnotclang?(1个回答)关闭8年前。考虑代码:structFoo{intx=10;};intmain(){constFoofoo;}它在g++下编译http://coliru.stacked-crooked.com/a/99bd8006e10b47ef,但是在clang++http://coliru.stacked-crooked.com/a/93f94f7d9625b579下会报错:error:defaultini

c++ - 派生类作为默认参数 g++

请看这段代码:templateclassA{classbase{};classderived:publicA::base{};public:intf(typenameA::base&arg=typenameA::derived()){return0;}};intmain(){Aa;a.f();return0;}在g++中编译生成如下错误信息:test.cpp:Infunction'intmain()':test.cpp:25:error:defaultargumentforparameteroftype'A::base&'hastype'A::derived'基本思想(使用派生类作为基

c++ - 如何使 Visual Studio C++ 2010 编译行为像 gcc/g++? (或相反亦然)

假设您有以下简单的main.cpp文件:#include#include#includeusingnamespacestd;intmain(){conststringFILENAME="foo.txt";ifstreamsomefile(FILENAME);populations.close();return0;}这可以通过VisualStudioC++2010正常编译。但是,在基于Linux的系统上,如果我执行makemain并编译,我们会得到一个预期的错误,因为我们没有调用c_str()字符串常量,像这样:ifstreamsomefile(FILENAME.c_str());众所周

C++:强制完成模板编译(MSVC/G++)

你好,祝你有美好的一天。以下代码片段在cl.exe(15.00.30729.01)和mingw-g++(4.4.0)上编译:templateclassTest{public:Tt;voiderror(){intdoesNotExist=6;returndoesNotExist;//test;return0;}另外,在cl.exe上你甚至可以逃避这样的事情:templateclassTest{public:Tt;voiderror(){doesNotExist=6;//现在,这显然会发生,因为编译器不会为模板类的方法创建内容,直到有人调用它们。但是,当您设计大型模板类时,这可能会带来问题

G++ 4.5 中 std::complex 的 C++11 复制赋值 - 与 'operator+' 不匹配

下面的代码无法使用-std=c++0x开关在g++4.5.0版中编译。我收到以下错误消息:error:nomatchfor'operator+'in'std::pow[with_Tp=float,_Up=int,typename__gnu_cxx::__promote_2::__type=double](((conststd::complex&)((conststd::complex*)(&x))),((constint&)((constint*)(&2))))+y'我相信这与提到的可分配要求有关here.我应该为complex定义自己的复制赋值运算符吗?如果是,怎么办?#includ

c++ - %g 精度问题

当我使用printf("%.6g\n",36.666666662);时,我期望输出36.666667。但实际输出是36.6667我给出的格式有什么问题?我的目标是有6个小数位 最佳答案 这是正确的行为。根据cplusplus.com:Fora,A,e,E,fandFspecifiers:thisisthenumberofdigitstobeprintedafterthedecimalpoint.ForgandGspecifiers:Thisisthemaximumnumberofsignificantdigitstobeprinte

c++ - g++ 版本 4.0.0.8 和 4.3.2 之间有什么区别?

g++4.0.0.8和g++4.3.2有什么区别?这两个是我在各种编程比赛中看到的最常见的C++编译器。我尝试用谷歌搜索它,但一无所获。 最佳答案 考虑到您对两者之间的C++变化感兴趣,这确实不是一个“庞大的列表”。4.0.0.8只是4.0的补丁修订版,其发行说明在这里:http://gcc.gnu.org/gcc-4.0/changes.html4.3.2是4.3的补丁修订版,其发行说明在这里:http://gcc.gnu.org/gcc-4.3/changes.html如果您查看它们之间的差异,我认为以下列表涵盖了您真正关心的G

c++ - 如何在中等规模的项目中诊断 g++ 错误 "cc1plus.exe: out of memory allocating 838860800 bytes"?

这个问题在这里已经有了答案:Running'gcc'onC++sourcefileonLinuxgives"cc1plus:outofmemoryallocating..."errormessage(2个答案)关闭6年前。我正在尝试移植我的C++library使用基本的g++makefile(它在VisualStudio中编译得很好)。我现在尝试编译的部分大约有45000行代码。库本身编译正常,但是当我尝试将它包含到控制台界面应用程序中时,编译器崩溃并显示以下消息,没有其他消息:cc1plus.exe:outofmemoryallocating838860800bytes当我包含项目的

解决win11安装node后npm报错 \node_modules\npm\bin\npm-cli.js“ prefix -g‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

解决win11安装node后npm报错\node_modules\npm\bin\npm-cli.js"prefix-g’不是内部或外部命令,也不是可运行的程序或批处理文件。电脑正常安装node后,查看安装是否成功,分别运行node-vnpm-v结果node正常,npm却提示有问题报错\node_modules\npm\bin\npm-cli.js"prefix-g’不是内部或外部命令,也不是可运行的程序或批处理文件。然后就是一顿检查,环境变量,但是始终没有找原因,只能求救度娘,几经百度最后终于找到一个有用的办法,现记录如下其实很简单只要,把环境变量里【ComSpec的变量值】删除npm就能正