草庐IT

c++ - g++ 编译器错误 : couldn't deduce template parameter ‘_Funct’

我正在尝试使用ANSIC++for_each语句迭代并打印标准vector的元素。如果我让for_each调用一个非重载函数,它会工作,但如果我让它调用一个重载函数,则会产生编译器错误。这是一个最小的测试程序,用于显示编译器错误发生的位置:#include#include#includestructS{charc;inti;};std::vectorv;voidprint_struct(intidx);voidprint_struct(conststructS&s);//f:anon-overloadedversionoftheprecedingfunction.voidf(const

c++ - g++-4.8 中缺少 AVX 日志内在函数 (_mm256_log_ps)?

我试图在我的代码中使用一些AVX内在函数,但遇到了对数内在函数的障碍。使用适用于Linux的IntelIntrinsicsGuidev3.0.1,我看到内在_mm256_log_ps(__m256)被列为“immintrin.h”的一部分,并且在我当前的arch上也受支持。然而,尝试编译这个简单的测试用例失败并显示“错误:‘_mm256_log_ps’未在此范围内声明”这个例子是用g++-4.8-march=native-mavxtest.cpp编译的#includeintmain(){__m256i;_mm256_log_ps(i);}我是否遗漏了一些基本的东西?某些内在函数是否不受

c++ - g++ 标准支持

读到这里我有点困惑:Gcc4.5onlinemanual---Standardssection.他们解释了这一点TheoriginalISOC++standardwaspublishedastheISOstandard(ISO/IEC14882:1998)andamendedbyaTechnicalCorrigendapublishedin2003(ISO/IEC14882:2003).ThesestandardsarereferredtoasC++98andC++03,respectively.GCCimplementsthemajorityofC++98(exportisanota

c++ - g++: array bound 不是整数常量

有了代码,constdoublerotationStep=0.001;constintN=2*int(M_PI/rotationStep)+3;staticunsignedintcounts[N];g++给出错误:arrayboundisnotanintegerconstantbefore»]«token我正在使用g++/gcc版本4.6.1谁能告诉我为什么g++提示这个表达式? 最佳答案 根据2003年的ISOC++标准,这不是整型常量表达式。引用标准第5.19节:Anintegralconstant-expressioncani

c++ - VC++ : Performance drop x20 when more threads than cpus but not under g++

简单的多线程c++11程序,其中所有线程在紧密循环中锁定相同的互斥量。当它使用8个线程时(作为逻辑cpu的数量)可以达到500万锁/秒但是只添加一个额外的线程-性能会下降到200,000/秒!编辑:在g++4.8.2(ubuntux64)下:即使有100个线程,性能也不会下降!(性能是两倍多,但那是另一回事了)-所以这似乎确实是一个特定于VC++互斥实现的问题我用下面的代码(Windows7x64)复制了它:#include#include#include#include#include#include#includeusingnamespacestd::chrono;voidthre

c++ - 默认模板类参数混淆了 g++?

昨天我遇到了一个g++(3.4.6)编译器问题,我使用Intel(9.0)编译器编译的代码没有问题。这是显示所发生情况的代码片段:templateclassFoo{};structBar{voidmethod(Fooconst&stuff=Foo());};g++编译器错误是:foo.cpp:5:error:expected`,'or`...'before'>'tokenfoo.cpp:5:error:wrongnumberoftemplatearguments(1,shouldbe2)foo.cpp:2:error:providedfor`templatestructFoo'foo.

c++ - 一组警告作为错误 g++

我想更改我的g++编译器的警告和错误行为:我希望将正常警告识别为错误(-Werror)我希望发现额外的警告。(-Wall和-Wextra)但我的问题是,这样一来,所有和额外的警告都会出错。有没有一种方法可以实现我想要的,而无需在-Werror=xxx,xxx,xxx设置长列表。是否有某种错误集的别名? 最佳答案 如果你只是给出-Werror,所有的警告都会变成错误。除了将那些你(不想)想犯的错误列为-W(no-)error=xxx之外,我不相信有一种方法可以“将一些警告变成错误".当然,一种解决方案可能是将代码编译两次-一次使用-W

c++ - g++:使用 ZIP 文件作为输入

我们身边有Boost库。它由大量永远不会更改的文件组成,并且只使用其中的一小部分。如果我们要更改版本,我们会交换整个boost目录。目前,我们的SVN中有Boost源,逐个文件,这使得结帐操作非常缓慢,尤其是在Windows上。如果有一个符号/插件来处理ZIP文件中的C++文件,那就太好了,比如://@ZIPFSASSIGN'boost''boost.zip/boost'#includeg++是否支持编译器Hook?是否有任何关于ZIP支持的努力?其他想法? 最佳答案 我假设make或类似的构建系统参与构建您的软件的过程。我会将zi

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

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

c++ - g++ 生成的程序集看起来很难看

我对gcc汇编非常熟悉...最近我被迫使用g++进行一些代码清理。顺便提一下,我对汇编非常熟悉,因此出于好奇,我经常看看编译器生成的asm有多好。但是g++的命名约定很奇怪。我想知道是否有关于如何阅读其asm输出的指南?非常感谢。 最佳答案 我不觉得g++的asm“难看”或难以理解,尽管我已经使用GCC8年多了。在Linux上,函数标签通常以_ZN开头,“_ZN”前缀是指定C++名称重整(与C相对)的标记,后面是函数所属的命名空间,然后是函数名称和参数类型,然后是模板,如果有的话。示例://tests::vec4::testEqua