草庐IT

GCC-style

全部标签

clang 和 gcc 中的 C++14 可变参数模板参数推断

我正在使用clang3.5.0和gcc版本4.9.2(两者都启用了C++14选项,尽管尾随返回类型可以在C++11中完成)。以下代码在g++中编译,而不是在clang++中编译。我的问题是“哪一个是正确的?”#include#include#includeusingnamespacestd;templatestructsymop{OPop;tuplefs;symop(constOP&oopp,constF1&f1,constFs&...ffss):op(oopp),fs(f1,ffss...){}};templateautobaz(constsymop&so){returnso.op(

c++ - AVX、SSE 总和比 gcc 自动向量化慢

我有一个奇怪的现象,无法真正解释。我正在尝试编写一些数字代码,从而对一些实现进行基准测试。我只是想用SSE和AVX以及gcc自动矢量化来对一些vector加法进行基准测试。为了测试这一点,我使用并修改了下面的代码。代码:#include#include#include"../../time/timer.hpp"voidser(double*a,double*b,double*res,intsize){for(inti(0);i对于计时和计算的GFLOP/S,我得到:./test3AVX1892ms0.338266GFLOP/sSSE408ms1.56863GFLOP/sSER396ms

c++ - gcc命令行中静态库的cpptask排序

我如何强制cpptask将静态库移动到发布给编译器的arg列表的末尾?这是我正在使用的子句执行时,libboost_thread.alibboost_date_time.a是参数列表中第一个通过编译器的文件,gcc-ggdb-Wl,-export-dynamic-Wshadow-Wno-format-y2k\../../lib/libboost_date_time.a../../lib/libboost_thread.ax.cpp...这会导致编译器错误。通过手动将它们移动到参数列表的末尾,应用程序可以正确编译。gcc-ggdb-Wl,-export-dynamic-Wshadow-W

c++ - gcc 在编译时或链接时的可见性

我正在尝试使用gcc的fvisibility功能限制共享库的ABI。但是我很困惑什么是正确的方法。我的makefile将构建过程分为两个阶段。在第一步中,所有.cpp文件都使用一些gcc选项构建为目标文件。然后使用另一组gcc和ld选项将所有目标文件链接在一起。从我读到的内容来看,可见性与第二步有关。然而,这与我观察到的结果相矛盾。如果我将fvisibility=hidden添加到编译时选项,结果如预期的那样,nm-D报告了一组更小的导出符号。相反,如果我将它添加到链接时间选项中,它似乎不会影响构建。在寻找解释时,我比较了使用和不使用fvisibility生成的目标文件。区别似乎在于目

c++ - 部署使用 GCC 4.6 编译的 OSX 应用程序

我正在尝试在MacOS-X上移植我的一个项目。当我使用C++0X开发我的项目时,我需要一个比Xcode提供的版本更新的GCC版本(甚至是Xcode4),所以我在我的SnowLeopardsMac上编译了GCC4.6。我的项目确实可以正常编译,它也可以在我编译它的计算机(OS-X10.6.7)上启动,但是当我将它传输到我的MacBook(OS-X10.5.8)时它不起作用。它返回以下错误:dyld:lazysymbolbindingfailed:Symbolnotfound:__ZNSo9_M_insertImEERSoT_Referencedfrom:/Users/zu/Desktop

c++ - Intel (windows) c++ 编译器并将其库实现更改为 gcc。可能吗?

不确定这是不是该问的地方,但这里是来自page在英特尔网站上,它指出:TheIntelC++CompilerforWindowsusestheMicrosoftVisualC++headerfiles,librariesandlinker.Microsoftcontrolstheheaderfilesthatdefinethenamespace.ContactMicrosoft'stechnicalsupportinreferencetoMicrosoft'sconformancetotheC++standardonthisissue...link是否有英特尔(或其他)指南将库从vis

c++ - 如何忽略 [默认启用] 的特定 gcc 警告?

我有以下程序将绿色文本打印到终端:#include#include//returnsacoloredstringforterminaloutputstreamsstd::stringcolorize_forground(std::stringconst&message,intconst&background){returnstd::string("\e[38;5;"+std::to_string(background)+"m"+message+"\x1b[0m");}intmain(){std::cout但是,当我用下面的警告标志编译程序时,g++-std=c++1y-pedantic

c++ - gcc 4.8 或更早版本是否存在关于正则表达式的问题?

我正在尝试在一段C++11代码中使用std::regex,但该支持似乎有点问题。一个例子:#include#includeintmain(intargc,constchar*argv[]){std::regexr("st|mt|tr");std::cerr输出:st|mt|trmatchesst?1st|mt|trmatchesmt?1st|mt|trmatchestr?0当使用gcc(MacPortsgcc474.7.1_2)4.7.1编译时,要么使用g++*.cc-otest-std=c++11g++*.cc-otest-std=c++0x或g++*.cc-otest-std=gn

c++ - 如何将 GCC 的 printf 格式属性与 C++11 可变参数模板一起使用?

我有一个C++类,它是日志系统的前端。它的日志记录功能是使用C++11的可变参数模板实现的:templatevoidFrontend::log(constchar*fmt,Args&&...args){backend->true_log(fmt,std::forward(args)...);}每个日志记录后端都实现了自己的true_log版本,除其他外,它使用转发的参数调用vsnprintf。例如:voidBackend::true_log(constchar*fmt,...){//otherstuff..va_listap;va_start(ap,fmt);vsnprintf(buf

c++ - 使用 gcc 编译错误 - strprintf ("%"PRId64, n)

我正在尝试使用GCC++在我的(最新的)Centos6.5上从Github编译一些代码。但是当我尝试编译代码时收到以下错误消息。下面一行是失败的:...#define__STDC_FORMAT_MACROS1...#include...inlinestd::stringi64tostr(int64_tn){returnstrprintf("%"PRId64,n);//错误是:error:expected')'before'PRId64可能是什么问题,我该如何解决?编辑1:这是失败的代码行。https://github.com/rat4/blackcoin/blob/master/src