草庐IT

c++ - g++ 不输出任何错误

每当我尝试在终端上用g++编译c++代码时,我似乎无法让g++输出任何错误消息,即使我确定在编译时应该捕获一些错误(例如语法,引用类型...)。我尝试了几种方法,比如这个make文件:all:g++-W-Wall-Werrormain.cpp它所做的就是输出:make:***[all]Error1这不是很有用,显然...输入如下内容:g++-W-Wall-Werrormain.cpp直接到终端(没有make文件)根本不输出任何消息。然而,这在编译时成功输出了所有错误:ccmain.cpp我的问题是:如何让g++输出错误消息,以便我知道在哪里更正我的代码? 最

c++ - 更改文件内容 - 这是 g++ 4.7.2 中的错误还是我做错了?

在编写一些代码来更新二进制文件中的位置时,我注意到了一些奇怪的事情。考虑这个示例代码:#include#include#includeusingnamespacestd;intmain(){chartmp;strings;fstreamfs;fs.open("test.txt",fstream::out);fs>s;cout>s;cout在最近的g++版本中(至少在6.2.1中),我可以毫无问题地读取然后写入一些字节-在示例中你得到正确的输出:blubblah然后我用g++4.7.2编译代码,突然更新没有效果,即第二个输出仍然是“blub”,除非我添加fs.tellg()或fs.tel

c++ - gcc 和 g++ 错误 : error trying to exec 'cc1plus' : execvp: No such file or directory

我在编译时遇到问题.c和.cpp使用gcc的文件和g++,对于这两种情况,我都收到了消息:g++(orgcc):errortryingtoexec'cc1plus':execvp:Nosuchfileordirectory`我已经尝试重新安装gcc和g++并确保它们的版本相同。编辑:我使用的是ubuntu16.04.1LTS,g++和gcc的版本都是5.4.020160609。以下是echo|g++-v-xc++-fsyntax-only-的输出:Usingbuilt-inspecs.COLLECT_GCC=g++Target:x86_64-linux-gnuConfiguredwit

c++ - 继承的构造函数,在 clang++3.9 中编译,在 g++7 中失败

这段代码structBase{};structDerived:Base{usingBase::Base;};intmain(){Baseb;Derivedd{b};}compilesfineonclang++3.9,然而它failsonallgcc's(包括7)和小于3.9版本的clangs错误信息error:nomatchingfunctionforcallto'Derived::Derived()Derivedd{b}'.上面的代码是否合规?PS:如果我注释掉usingBase::Base行,代码将不再在clang-3.9上编译。 最佳答案

c++ - g++ 9.1 更新后 std::stable_sort 的问题

从gcc/g++8.1更新到9.1并重新编译我的代码后,它的大部分测试都失败了。因此,进行了一些挖掘,我发现std::stable_sort是问题所在。事实证明,我调用的大部分电话都是std::stable_sort没有必要,也就是说,调用std::sort就足够了。因此,我在可能的地方进行了替换,并且针对这些代码段的测试再次成功。现在,我只有一次调用std::stable_sortvoidMshReader::determinePhysicalEntitiesRange(){//connsisnotemptystd::stable_sort(this->conns.begin(),t

c++ - 如何解释 g++ 生成的 .i 文件

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:gccpreprocessoroutput出于某种原因,我需要调查一些由g++预处理器生成的.i文件,我在其中看到如下代码:#1/usr/local/include/boost/python.hpp13#11/usr/local/include/boost/python.hpp3我是一名经验丰富的C++程序员,我知道.i文件是什么,问题是,我找不到关于如何解释.i文件中的行的详细解释。谁能解释一下上面几行的意思(尤其是文件后面的数字是什么意思),或者告诉我一个可以找到相关文档的地方?谢谢,看了链接后,我的问题

使用 g++ 4.6 和 boost::unordered_map 的 C++11 相关编译错误

我有一段C++代码会因编译错误而失败,除非它在​​C++11模式下运行,但我无法弄清楚为什么会这样,因为代码没有(明确地)使用C++11特点:#include#include#includestructSomeStruct{boost::unordered_mapintMap;};intmain(intargc,constchar*argv[]){std::vectorvals;vals.resize(100);}在使用gcc4.6.3-1ubuntu5和boost1.48的Ubuntu12.0464位机器上编译时:g++test.cpp然后我得到这个编译错误:Infileinclud

C++11,枚举类,g++ 的 undefined reference ,与 clang++ 一起工作

我使用了新的C++11“枚举类”类型,并在使用g++时观察到“undefinedreference”问题。这个问题不会发生在clang++中。我不知道是我做错了什么还是g++错误。重现问题的代码是:(4个文件:enum.hpp、enum.cpp、main.cpp和Makefile)//file:enum.hppenumclassMyEnum{val_1,val_2};templatestructFoo{staticconstMyEnumvalue=MyEnum::val_1;};templatestructFoo{staticconstMyEnumvalue=MyEnum::val_2

c++ - 使用 g++ 静态链接到 libcrypto++

我正在尝试使用DebianWheezy和g++4.7在我的系统上编译一个程序。我希望它能够在另一个带有DebianSqueeze的系统上运行(并且没有最近的g++)。我无法在Squeeze上编译程序,因为我使用了旧g++不支持的某些C++11功能,以及新的Boost版本和libcrypto++9。据我了解,解决此问题的常用方法是静态链接其他系统不支持的库,在我的情况下为libstdc、boost和crypto++.我现在的(链接)编译器调用是g++-4.7.obj/btcmirco.o-Wl,-Bstatic-lboost_program_options-lboost_system-l

c++ - G++:可以将 __attribute__((__may_alias__)) 用于指向类实例而不是类定义本身的指针吗?

我正在寻找以下问题的答案:may_alias是否适合作为指向某个类Foo对象的指针的属性?还是只能在类(class)级别使用?考虑以下代码(它基于更复杂的真实示例):#includeusingnamespacestd;#definealias_hack__attribute__((__may_alias__))templateclassFoo{private:/*alias_hack*/charData[sizeof(T)];public:/*alias_hack*/T&GetT(){return*((/*alias_hack*/T*)Data);}};structBar{intBaz