草庐IT

GCC-style

全部标签

c++ - 标准库容器在 GCC 中生成大量右值拷贝

我正在为linux和windows编写一个应用程序,并注意到GCC构建对复制构造函数产生了很多无用的调用。这是产生这种行为的示例代码:structA{A(){std::coutvec_a(3);}这个测试只创建一个包含3个元素的vector。我期望3个默认构造函数调用和0个拷贝,因为没有A左值。在VisualC++2010中,输出为:defaultmovedefaultmovedefaultmove在GCC4.4.0(MinGW)中,(-O2-std=c++0x),输出为:defaultcopycopycopy发生了什么,我该如何解决?实际类(class)的拷贝很昂贵,默认构造和移动很

c++ - 标准库容器在 GCC 中生成大量右值拷贝

我正在为linux和windows编写一个应用程序,并注意到GCC构建对复制构造函数产生了很多无用的调用。这是产生这种行为的示例代码:structA{A(){std::coutvec_a(3);}这个测试只创建一个包含3个元素的vector。我期望3个默认构造函数调用和0个拷贝,因为没有A左值。在VisualC++2010中,输出为:defaultmovedefaultmovedefaultmove在GCC4.4.0(MinGW)中,(-O2-std=c++0x),输出为:defaultcopycopycopy发生了什么,我该如何解决?实际类(class)的拷贝很昂贵,默认构造和移动很

c++ - 检测二进制文件的 GCC 编译时标志

有没有办法找出特定二进制文件编译时使用的gcc标志? 最佳答案 快速浏览GCC文档并没有发现任何问题。Boost家伙是最聪明的C++开发人员,他们resort命名conventions因为这通常是不可能的(毕竟,可执行文件可以用任意数量的语言,由任意数量的编译器版本创建)。(后来添加):TurnsoutGCChasthisfeaturein4.3ifaskedforwhenyoucompilethecode:Anewcommand-lineswitch-frecord-gcc-switches...causesthecommandl

c++ - 检测二进制文件的 GCC 编译时标志

有没有办法找出特定二进制文件编译时使用的gcc标志? 最佳答案 快速浏览GCC文档并没有发现任何问题。Boost家伙是最聪明的C++开发人员,他们resort命名conventions因为这通常是不可能的(毕竟,可执行文件可以用任意数量的语言,由任意数量的编译器版本创建)。(后来添加):TurnsoutGCChasthisfeaturein4.3ifaskedforwhenyoucompilethecode:Anewcommand-lineswitch-frecord-gcc-switches...causesthecommandl

c++ - 如何在 ubuntu 上将 gcc 编译器更改为 c++11

我使用的是ubuntu12.04,默认的gcc是4.6.3。它不接受c++11命令,并且给我输出说该命令不兼容c++98。我在网上查了一下,看到有人建议不要更改操作系统上的默认编译器,因为它变得不稳定。任何人都可以建议修复或安全的方式来下载符合c++11的gcc编译器。 最佳答案 正如其他人所建议的,您需要输入std命令行选项。让我们轻松为您服务按Ctrl+Alt+T打开终端sudogedit~/.bashrc输入下一行作为最后一行aliasg++="g++--std=c++0x"保存并关闭文件并关闭终端。现在再次打开终端,只需通过

c++ - 如何在 ubuntu 上将 gcc 编译器更改为 c++11

我使用的是ubuntu12.04,默认的gcc是4.6.3。它不接受c++11命令,并且给我输出说该命令不兼容c++98。我在网上查了一下,看到有人建议不要更改操作系统上的默认编译器,因为它变得不稳定。任何人都可以建议修复或安全的方式来下载符合c++11的gcc编译器。 最佳答案 正如其他人所建议的,您需要输入std命令行选项。让我们轻松为您服务按Ctrl+Alt+T打开终端sudogedit~/.bashrc输入下一行作为最后一行aliasg++="g++--std=c++0x"保存并关闭文件并关闭终端。现在再次打开终端,只需通过

c++ - 如何在 OSX 上安装 gtk 以与 g++/gcc 编译器一起使用

我已经问过这个问题atapple.stackexchange.com,但我被告知这是这个问题的错误位置-所以我会在这里问它,就像我被建议做的那样。在我的大学,我们的任务是实现一个具有GTK-GUI的c程序。GTK-GUI已经实现了,我们只需要实现一个算法,给它一些数据。我已经让gcc/g++工作了。但是当我尝试编译项目时,编译器返回错误,它没有找到gtk:fatalerror:'gtk/gtk.h'filenotfound#include^所以我的问题是:如何在OSXMavericks上安装gtk以便与gcc/g++编译器一起使用?我的设置:MacBookProRetinaMid201

c++ - 如何在 OSX 上安装 gtk 以与 g++/gcc 编译器一起使用

我已经问过这个问题atapple.stackexchange.com,但我被告知这是这个问题的错误位置-所以我会在这里问它,就像我被建议做的那样。在我的大学,我们的任务是实现一个具有GTK-GUI的c程序。GTK-GUI已经实现了,我们只需要实现一个算法,给它一些数据。我已经让gcc/g++工作了。但是当我尝试编译项目时,编译器返回错误,它没有找到gtk:fatalerror:'gtk/gtk.h'filenotfound#include^所以我的问题是:如何在OSXMavericks上安装gtk以便与gcc/g++编译器一起使用?我的设置:MacBookProRetinaMid201

c++ - 如何禁用特定的未知 #pragma 警告(GCC 和/或 Clang)

我知道如何禁用所有未知的#pragma警告。例如,在HowcanIdisable#pragmawarnings?中给出了答案。.有没有办法为一个特定的编译指示禁用“未知编译指示”警告?例如,如果我禁用#pragmaugubugu以下代码的警告:#pragmaugubugu#pragmauntiuntiintmain(){return0;}当编译时:g++pragma.cpp-Wallclang++pragma.cpp-Wall应该产生一个警告:warning:ignoring#pragmauntiunti例如,也许有一种简单的方法来注册一个什么都不做的自定义编译指示?很高兴知道Visu

c++ - 如何禁用特定的未知 #pragma 警告(GCC 和/或 Clang)

我知道如何禁用所有未知的#pragma警告。例如,在HowcanIdisable#pragmawarnings?中给出了答案。.有没有办法为一个特定的编译指示禁用“未知编译指示”警告?例如,如果我禁用#pragmaugubugu以下代码的警告:#pragmaugubugu#pragmauntiuntiintmain(){return0;}当编译时:g++pragma.cpp-Wallclang++pragma.cpp-Wall应该产生一个警告:warning:ignoring#pragmauntiunti例如,也许有一种简单的方法来注册一个什么都不做的自定义编译指示?很高兴知道Visu