草庐IT

c++ - 将 AVX 与 GCC 一起使用 - 缺少 avxintrin.h

我在Ubuntu-64位12.04LTS上运行我的笔记本电脑(coreI5)。我正在尝试进入AVX以生成一些随机数。在Eclipse-CDT中,我使用LinuxGCC创建了一个新的C++“HelloWorld”项目。我包含了immintrin.h并尝试加载__m256类型的东西。编译器抛出一个错误:在此范围内未声明类型“__m256”我查看了immintrin.h并查找了avxintrin.h,以防万一,有拼写错误。单击avxintrin.h上的打开声明时,Eclipse说:Couldnotfindincludefile'avxintrin.h'onincludepaths无论如何,该

c++ - GCC#pragma 消息被忽略

我正在尝试displayacompile-timemessageinGCC,通过#pragmamessage"helloworld"但是当我用-Wall编译时它给出了警告warning:ignoring#pragmamessage我在MacOSX10.6.8(SnowLeopard)上使用GCC4.2.1。为什么不显示消息?如何让它显示消息? 最佳答案 如果您阅读correctdocumentation,您会发现GCC4.2.1不支持#pragmamessage。 关于c++-GCC#p

c++ - 如何在GCC编译器中启用最高警告级别(Boost被大量使用)

我刚读了一本书,建议在GCC中启用最高警告级别。刚上网查了一下文档,发现参数太多了。我想启用最高警告级别,我应该使用哪个参数?我们在项目中大量使用了Boost。 最佳答案 与具有4个级别的cl相反,gcc只有一组选项可以打开或关闭。正如其他人所提到的,-Wall是默认设置,它已经打开了许多警告。-pedantic选项增加了一些内容。还有-Wextra又是一组...但要真正捕获许多警告,您必须手动添加许多。有一个我喜欢使用的集合,虽然有人告诉我其中有些是矛盾的,但我发现这个列表对我的开发工作相当有用:-Werror-Wall-Wext

c++ - 当编译器从代码中取出所有空格和注释时,GCC 如何知道错误发生在哪一行?

我确信这也适用于其他编译器,但我只使用过GCC。如果编译器通过删除非代码的所有无关内容(注释、空格等)来优化代码,它如何正确显示原始文件中的错误所在行?它是否仅在检查错误后才优化代码?或者它是否以某种方式插入标签,以便在发现错误时知道它在哪一行?mycode.cpp:Infunction‘foo(intbar)’:mycode.cpp:59:error:nomatchingfunctionforcallto‘bla(intbar)’ 最佳答案 编译器将源代码转换为对象格式,或者更多正确地,这里是稍后将使用的中间格式生成对象格式。我没

c++ - 为什么 gcc 生成一个 memmove 而不是 memcpy 来复制 std::vector<>?

在gcc5.3中,以下示例中的两个函数都会生成对memmove的调用。生成memcpy会不会不合适?#includeintblackhole(conststd::vector&);intcopy_vec1(conststd::vector&v1){conststd::vectorv2{v1.begin(),v1.end()};returnblackhole(v2);}intcopy_vec2(conststd::vector&v1){constautov2=v1;returnblackhole(v2);}Exampleongodbolt. 最佳答案

c++ - gcc -O2 的奇怪整数行为

#include#includevoidsanity_check(intx){if(x当我用gccwtf.c编译上面的程序时,我得到了预期的输出:42!=-2147483648positivenumber:4297!=-2147483648positivenumber:97-2147483648==-2147483648negativenumber:-2147483648但是,当我用gcc-O2wtf.c编译程序时,我得到了不同的输出:42!=-2147483648positivenumber:4297!=-2147483648positivenumber:97-2147483648!

c++ - 通过分析汇编列表验证 gcc/g++ 中的编译器优化

我刚刚问了一个与编译器如何优化某些C++code有关的问题,我正在四处寻找关于如何验证编译器是否执行了某些优化的任何问题。我试图查看使用g++(g++-c-g-O2-Wa,-ahl=file.sfile.c)生成的程序集列表,以了解幕后发生的事情,但输出对我来说太神秘了。人们使用什么技术来解决这个问题,是否有关于如何解释优化代码的汇编列表或特定于GCC工具链的文章的任何很好的引用来讨论这个问题? 最佳答案 GCC的优化过程以一种名为GIMPLE的格式处理代码的中间表示。.使用-fdump-*familyofoptions,你可以要求

c++ - Gcc:强制编译器默认使用 unsigned char

由于当unsigned限定符不存在时,C++中char的性质是编译器相关的,是否有一个参数我可以传递给GCC强制将所有char编译为unsigned? 最佳答案 您正在寻找的标志是-funsigned-char。来自thedocumentation:-funsigned-charLetthetypecharbeunsigned,likeunsignedchar.Eachkindofmachinehasadefaultforwhatcharshouldbe.Itiseitherlikeunsignedcharbydefaultorli

c++ - Visual C++ 和 gcc 一样强大吗?

我对强大的定义是定制能力。我熟悉gcc我想试试MSVC。所以,我在msvc中搜索gcc等效选项。我找不到很多。控制输出类型Stopafterthepreprocessingstage;donotrunthecompilerproper.gcc:-Emsvc:???Stopafterthestageofcompilationproper;donotassemble.gcc:-Smsvc:???Compileorassemblethesourcefiles,butdonotlink.gcc:-cmsvc:/c对调试很有用Print(onstandarderroroutput)thecomm

c++ - GCC:程序不适用于编译选项 -O3

我正在编写一个C++程序,当我使用优化(选项-O1、-O2、-O3等)编译它时,它无法运行(出现段错误),但当我在没有优化的情况下编译它。有没有可能是我的代码有错误?还是我应该假设这是GCC中的错误?我的GCC版本是3.4.6。是否有任何已知的解决此类问题的方法?我的程序的优化版本和未优化版本在速度上存在很大差异,因此我确实需要使用优化。这是我原来的仿函数。一个在没有优化级别的情况下工作正常并且在任何优化级别都抛出段错误的:structdistanceToPointSort{indexedDocument*point;distanceToPointSort(indexedDocumen