草庐IT

c++ - 无法在 QtCreator 中使用 g++ 7.2 使用 c++17 功能

我最近将gcc和g++更新到了7.2版。我想特别尝试std::experimental::any和std::variant,我在QtCreator中使用Qt5.9.1。到目前为止,我已经在项目文件中写了这个:CONFIG+=c++17我已经在正确的地方添加了正确的标题:#include#include任何工作都很好,没有问题。但是,当我包含变体头文件时,我收到此错误:/usr/include/c++/7/bits/c++17_warning.h:32:error:#errorThisfilerequirescompilerandlibrarysupportfortheISOC++201

c++ - 哪个 gcc 和 g++ 版本支持 c 和 c++ 的哪个标准?

例如,哪个gcc版本支持c99?是否有任何表格或图表显示gcc和g++的标准支持状态?gcc和g++是如何演变的?谢谢~ 最佳答案 非常严格地说,GCC从4.3开始只支持C89、C++98和C++03。到目前为止,对C99的支持仍然不完整,但GCC长期以来一直支持一个非常大且可用的子集。实验性的C++11支持从4.3开始,并且一直在改进;它在4.6.x中已经非常有用了,并且在4.7中添加了更多功能(虽然4.7.0有点不稳定)。还有一些C11支持,但C11的许多更改都需要一个适当的新C库,而这不是那么容易替换的。

c++ - 哪个 gcc 和 g++ 版本支持 c 和 c++ 的哪个标准?

例如,哪个gcc版本支持c99?是否有任何表格或图表显示gcc和g++的标准支持状态?gcc和g++是如何演变的?谢谢~ 最佳答案 非常严格地说,GCC从4.3开始只支持C89、C++98和C++03。到目前为止,对C99的支持仍然不完整,但GCC长期以来一直支持一个非常大且可用的子集。实验性的C++11支持从4.3开始,并且一直在改进;它在4.6.x中已经非常有用了,并且在4.7中添加了更多功能(虽然4.7.0有点不稳定)。还有一些C11支持,但C11的许多更改都需要一个适当的新C库,而这不是那么容易替换的。

c++ - 我的机器上的 std::promise 是否损坏(使用 g++-mp)?

这段代码是否有效,还是我的编译器坏了?#include#includeintmain(){std::coutmypromise;std::futuremyfuture=mypromise.get_future();mypromise.set_value(true);boolresult=myfuture.get();std::cout这是输出:$g++-mp-4.8-std=c++11test.cpp$./a.outdoingthetestSegmentationfault:11$我正在使用g++-mp-4.8,它是来自macports的gcc4.8。我要疯了吗?

c++ - 我的机器上的 std::promise 是否损坏(使用 g++-mp)?

这段代码是否有效,还是我的编译器坏了?#include#includeintmain(){std::coutmypromise;std::futuremyfuture=mypromise.get_future();mypromise.set_value(true);boolresult=myfuture.get();std::cout这是输出:$g++-mp-4.8-std=c++11test.cpp$./a.outdoingthetestSegmentationfault:11$我正在使用g++-mp-4.8,它是来自macports的gcc4.8。我要疯了吗?

c++ - 使用 g++ 5.3.1 编译的程序运行速度比使用 g++ 4.8.4 编译的相同程序慢 3 倍,相同的命令

最近,我开始使用Ubuntu16.04和g++5.3.1并检查我的程序运行速度慢了3倍。在此之前,我使用过Ubuntu14.04、g++4.8.4。我使用相同的命令构建它:CFLAGS=-std=c++11-Wall-O3.我的程序包含循环,充满了数学调用(sin、cos、exp)。你可以找到它here.我尝试使用不同的优化标志(O0、O1、O2、O3、Ofast)进行编译,但在所有情况下都会重现问题(Ofast两种变体运行速度更快,但第一个变体运行速度仍然慢3倍).在我的程序中,我使用libtinyxml-dev、libgslcblas。但是它们在两种情况下都有相同的版本,并且在性能

c++ - 使用 g++ 5.3.1 编译的程序运行速度比使用 g++ 4.8.4 编译的相同程序慢 3 倍,相同的命令

最近,我开始使用Ubuntu16.04和g++5.3.1并检查我的程序运行速度慢了3倍。在此之前,我使用过Ubuntu14.04、g++4.8.4。我使用相同的命令构建它:CFLAGS=-std=c++11-Wall-O3.我的程序包含循环,充满了数学调用(sin、cos、exp)。你可以找到它here.我尝试使用不同的优化标志(O0、O1、O2、O3、Ofast)进行编译,但在所有情况下都会重现问题(Ofast两种变体运行速度更快,但第一个变体运行速度仍然慢3倍).在我的程序中,我使用libtinyxml-dev、libgslcblas。但是它们在两种情况下都有相同的版本,并且在性能

c++ - typeid() 在 g++ 中返回额外的字符

classfoo{public:voidsay_type_name(){std::cout上面的代码使用g++在我的ubuntu机器上打印P3foo。我不明白为什么它打印P3foo而不仅仅是foo。如果我像这样更改代码std::cout它打印3foo。有什么想法吗? 最佳答案 因为它是指向foo的指针。foo有3个字符。所以它变成了P3foo。另一个是foo类型,所以它变成3foo。请注意,文本是依赖于实现的,在这种情况下,GCC只是为您提供了内部的、错位的名称。在程序c++filt中输入该损坏的名称以获得未损坏的名称:$c++fi

c++ - typeid() 在 g++ 中返回额外的字符

classfoo{public:voidsay_type_name(){std::cout上面的代码使用g++在我的ubuntu机器上打印P3foo。我不明白为什么它打印P3foo而不仅仅是foo。如果我像这样更改代码std::cout它打印3foo。有什么想法吗? 最佳答案 因为它是指向foo的指针。foo有3个字符。所以它变成了P3foo。另一个是foo类型,所以它变成3foo。请注意,文本是依赖于实现的,在这种情况下,GCC只是为您提供了内部的、错位的名称。在程序c++filt中输入该损坏的名称以获得未损坏的名称:$c++fi

【Linux】编译器gcc和g++与调试器gdb的使用

文章目录一、Linux编译器-gcc/g++1.程序运行的四个阶段1.1预处理1.2编译1.3汇编1.4链接2.链接方式与函数库2.1动态链接与静态链接2.2动态库与静态库3.gcc/g++的使用二、Linux调试器--gdb1.debug与release2.gdb的使用一、Linux编译器-gcc/g++1.程序运行的四个阶段我们知道,一个程序被运行起来之后需要经历四个阶段然后才变成一个可执行的程序,他们分别为:预处理,编译,汇编和链接。下面我们将介绍这四个阶段的操作,测试代码如下:#include//宏定义#defineN10intmain(){ //测试注释 //printf("hell