我想在没有命令行参数的情况下在g++中启用优化。我知道GCC可以通过在我的代码中编写#pragmaGCCoptimize(2)来做到这一点。但它似乎不适用于G++。此页面可能有帮助:http://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html我的编译器版本:$g++--versiong++(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1$gcc--versiongcc(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1我写了一些这样的代码:#pragmaGCCoptim
我正在尝试使用clang++编译我的C++代码,但不断收到与namespace冲突的错误。我的main.cpp文件是一个简单的HelloWorld程序(用于调试)。我感觉问题出在我在集群上编译的GCC或clang版本上。关于如何追查这个问题的任何想法?或故障排除步骤?[aebrenne@hpcsrc]$gcc-vUsingbuilt-inspecs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/data/apps/gcc/4.8.1/libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto-wrapperTarget:x86
我目前正在创建一个共享库DLL,但我需要在运行时在64位环境中加载它,因此它目前无法运行。如何使用g++从代码块编译64位dll?我尝试过像-m64这样的编译器选项,但似乎都不起作用。 最佳答案 要使用g++在Windows上编译64位程序,您需要MinGW64.我相信Code::Blocks随MinGW32一起提供。要将其安装到Code::Blocks上,请将zip文件解压到一个没有空格的文件夹中,例如C:\MinGW64打开Code::Blocks并点击设置->编译器和调试器。在选定的编译器下,单击复制。在下一个框中,键入“Mi
我最近发现了这段代码:structFoo{};intmain(){Fooa;//clang++deducesstd::initializer_list//g++5.1deducesFooautob{a};a=b;}它在g++5.1中编译良好,但在clang++中失败(同时使用-std=c++11和-std=c++14,结果相同)。原因是clang++deducesthetypeofbasstd::initializer_list,而g++5.1deducesasFoo.AFAIK,类型确实应该是(确实违反直觉)std::initializer_list这里。为什么g++5将类型推断为F
假设我使用MinGW64(g++编译器)创建并编译了一个简单的程序。在我的计算机上运行此程序并在ProcessExplorer中查找程序正在使用的DLL文件,我发现(以及许多其他文件):libgcc_s_seh-1.dlllibstdc++6.dlllibwinpthread-1.dll这些是唯一位于我的MinGW安装文件夹下的。使用的其余DLL文件位于C:\Windows下。问题1:MinGWDLL文件是MinGWC++运行时库(可以这么说)吗?它们的用途是否与例如msvcrXXX.dll(XXX=Microsoft运行时库的版本)相同。问题2:如果我想在另一台没有安装MinGW的计
我目前有一个项目使用g++来编译它的代码。我正在清理代码,我想确保所有函数都有原型(prototype),以确保正确处理诸如constchar*之类的事情。不幸的是,当我尝试指定-Wmissing-prototypes时,g++会提示:g++-Wmissing-prototypes-Wall-Werror-cfoo.cppcc1plus:warning:commandlineoption"-Wmissing-prototypes"isvalidforAda/C/ObjCbutnotforC++谁能告诉我:1)为什么gcc这无效?这是gcc中的错误吗?2)有没有办法打开这个警告?编辑:这
我正在对使用400行Linux的多平台C++项目进行细微更改makefile几年前别人创造的。makefile中有两行使用-dndebug(小写)作为g++的命令行参数。我认为其目的是定义ndebug符号,但是当它是小写时,该参数甚至会做任何事情吗?我对g++和Make知之甚少,但是,翻页OptionsControllingthePreprocessor,我认为参数需要大写才能起作用。 最佳答案 是的,应该是像这样的大写-DNDEBUG。-D是定义宏的GCC选项。NDEBUG是要定义的宏,以关闭C标准规定的断言。Ihaveminim
在一个大型项目中,我收到了一些来自g++-5.1.1的编译器警告仅在构建发布版本(使用优化标志)时而不是在构建调试版本时(禁用大多数编译器优化)。我已经使用命令将问题缩小到下面列出的最小示例重现问题。如果我使用g++-4.8.4,则不会出现此问题。是这是g++-5.1.1中的错误吗?或者,这段代码是否在做一些合法错误的事情并需要警告?为什么它不对代码中列出的最后三种情况产生任何警告(有关解释,请参阅底部的编辑)?对于那些感兴趣的人,这里是bugreport在GCC的Bugzilla中。/*Thiscodecomplainsthatthevariable'container'isunus
我的代码如下:#include#includefloatfoo(floatf){std::cout即使使用-pedantic-std=c++98-Wall-Wextra也不会报告最后一行中的调用不明确,但它不一定在其他编译器中工作,因为同样的原因foo(i)没有。gcc将以下内容添加到命名空间std:templateinlinetypename__gnu_cxx::__enable_if::__value,double>::__typesqrt(_Tp__x){return__builtin_sqrt(__x);}也就是说,它为所有整数类型X添加了inlinedoublesqrt(X)
我刚刚发现C++不会对从pair进行转换给出任何警告至pair,这有点令人惊讶。这是我的程序test_pair.cpp:#include#includeusingnamespacestd;intmain(){std::vector>v;pairp=make_pair(3.8,3);v.push_back(p);}我使用g++test_type.cpp-Wall-Wconversion编译它,但仍然没有生成警告。我正在使用g++v4.6.1。任何人都知道如何让g++为此生成警告,或者它无法完成? 最佳答案 对(和元组)几乎可以从任何适