草庐IT

c++ - 哪些标志将改善 gcc/clang 编译时间?

gcc或clang的哪些标志可以缩短编译时间?我需要启用调试功能,但可以自由禁用任何其他功能,如果它们会导致更快的编译。我知道还有很多其他方法可以缩短编译时间,但我只对这个领域感兴趣。 最佳答案 通过消除编译器完成的大部分工作(通常是优化),可以找到编译时间的最大yield。因此,不要启用优化(-O)标志。 关于c++-哪些标志将改善gcc/clang编译时间?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

C++ : friend declaration ‘declares a non-template function

我在重载时遇到问题流运算符(operator),我找不到解决方案:templateclassNVector{inlinefriendstd::ostream&operator&rhs);};templateinlinestd::ostream&NVector::operator&rhs){/*SOMETHING*/returnlhs;};它产生以下错误信息:warning:frienddeclaration‘std::ostream&operatorerror:‘std::ostream&NVector::operator如何解决这个问题?非常感谢。 最佳答

c++ - 帮助 GCC 进行自动矢量化

我有一个需要优化的着色器(有很多vector操作),我正在试验SSE指令以便更好地理解这个问题。我有一些非常简单的示例代码。通过USE_SSE定义,它使用显式SSE内在函数;没有它,我希望GCC会为我完成这项工作。自动矢量化感觉有点挑剔,但我希望它能帮我省点事。编译器和平台是:gcc4.7.1(tdm64),目标x86_64-w64-mingw32和IvyBridge上的Windows7。测试代码如下:/*IncludealltheSIMDintrinsics.*/#ifdefUSE_SSE#include#endif#include#ifdefined(__GNUG__)||defi

c++ - 计算 128 位整数中前导零的数量

如何有效地计算128位整数(uint128_t)中前导零的数量?我知道GCC的内置函数:__builtin_clz,__builtin_clzl,__builtin_clzll__builtin_ffs,__builtin_ffsl,__builtin_ffsll但是,这些函数仅适用于32位和64位整数。我还找到了一些SSE说明:__lzcnt16,__lzcnt,__lzcnt64正如您可能猜到的那样,它们仅适用于16、32和64位整数。对于128位整数是否有任何类似的、高效的内置功能? 最佳答案 inlineintclz_u12

c++ - 为什么 std::result_of 不适用于 lambda?

我设法将我的案例简化为以下最简单的代码:#includeautocall(constauto&f)->typenamestd::result_of::type{returnf();}intmain(){returncall([]{return0;});}gcc-4.9.2和gcc-5.0.0都不编译!两者都认为“调用”应该返回一个lambda函数!不要弄清楚“调用”返回一个int。这是编译器中的错误还是我的C++关闭了?非常感谢。 最佳答案 您的代码不是有效的C++,因为函数参数类型不能是auto,此语法已为ConceptsLite

c++ - 使用自定义构建的 gcc 时程序链接失败

我正在运行一个fedora21发行版,其中默认的gcc是4.9。我在/usr/local/gcc48中有一个自定义构建的gcc/g++4.8(例如,cuda需要gcc=现在,我获得了使用vtk库和其他库的源代码。如果我使用默认的gcc4.9,cmake和make可以正常工作。但是,当使用gcc48时,我得到:/usr/lib64/vtk/libvtkCommonDataModel.so.1:référenceindéfinievers«std::__throw_out_of_range_fmt(charconst*,...)@GLIBCXX_3.4.20»/lib64/libicuuc

c++ - 如何获得 4.2 版的 g++/gcc for windows?

如何获得适用于Windows的g++/gcc的最新版本,即4.2+?Mingw的标准g++是3.4.5,它有3年历史,于2005年11月发布。Mingw有一个4.2版本,但这只是在Alpha阶段。我找不到适用于Windows的g++的稳定最新版本,我肯定遗漏了一些东西。 最佳答案 TwilightDragonMedia跟踪并定期发布可用于MinGW环境的GCC版本。当前版本基于GCC4.3.2。包可以下载here.在对4.3.2-TDM1版本进行了两个多月的广泛测试后,我开始在生产中使用它。我遇到的唯一问题是C++中的跨DLL异常,

c++ - 没有匹配的调用函数(期望引用指针而不是指针)

我从xcode(3.2.4)/gcc(4.0)得到错误:/Users/admin/scm/audacity/mac/../src/toolbars/DeviceToolBar.cpp:Inmemberfunction'voidDeviceToolBar::ShowInputDialog()':/Users/admin/scm/audacity/mac/../src/toolbars/DeviceToolBar.cpp:817:error:nomatchingfunctionforcallto'DeviceToolBar::ShowComboDialog(wxChoice*&,wxStr

c++ - 标准库是否需要符合标准?

是否要求标准库符合标准?我觉得标准库不符合标准。这种感觉的基础是编译器生成的错误消息。例如,有时GCC会给出以前缀__gxx开头的错误消息以及许多我现在不记得的其他错误消息。但是看到它们让我觉得这些是非常编译器特定的消息,不同的编译器将无法编译GCC提供的标准库,反之亦然。是真的吗?这个问题可以换句话说:一个编译器提供的标准库可以用其他编译器编译吗?当我们说一个特定的编译器符合标准时,它是否自动意味着它附带的标准库也符合标准?或者它只是意味着这个编译器可以编译我们程序员编写的符合标准的代码?我可以在我的项目中使用一个编译器提供的标准库,而我的项目使用不同编译器来编译项目吗?可移植性是否

c++ - 将单个 float 移动到 xmm 寄存器

我想将存储在一个xmm寄存器中的数据与一个浮点值相乘,并将结果保存在一个xmm寄存器中。我制作了一张小图来更好地解释它。如您所见,我有一个xmm0寄存器,其中包含我的数据。例如它包含:xmm0=|4.0|2.5|3.5|2.0|每个float存储在4个字节中。我的xmm0寄存器是128位,16字节长。效果还不错。现在我想将0.5存储在另一个xmm寄存器中,例如xmm1,并将该寄存器与xmm0寄存器相乘,使xmm0中存储的每个值都乘以0.5。我完全不知道如何在XMM寄存器中存储0.5。有什么建议吗?顺便说一句:它是C++中的内联汇编程序。voidfilter(image*src_imag