草庐IT

clang-omp

全部标签

c++ - 带有 O2 的 clang++ 的 undefined reference

我在一个项目上尝试CLang3.4和libc++,但在Release模式下出现奇怪的链接错误:/home/wichtounet/dev/eddic/src/ast/Operator.cpp:17:error:undefinedreferenceto'std::__1::basic_ostream>&std::__1::operator,std::__1::allocator>(std::__1::basic_ostream>&,std::__1::basic_string,std::__1::allocator>const&)'clang:error:linkercommandfail

c++ - 为什么 g++ 和 clang++ 之间的编译时间差异很大?

我遇到了一个talkslide在第12页有一个示例说明了在存在继承的情况下进行类型检查的困难。structa{typedefintfoo;};structa1:a{};structa2:a{};#defineX(b,a)\structa##1:b##1,b##2{};\structa##2:b##1,b##2{};X(a,b)X(b,c)X(c,d)X(d,e)X(e,f)X(f,g)X(g,h)X(h,i)X(i,j)X(j,k)X(k,l)X(l,m)X(m,n)n1::foomain(){}预处理后转化为:structa{typedefintfoo;};structa1:a{};

c++ - 使用 clang-format - 将空括号保持在同一行

我正在尝试配置clang-format,这样大括号通常会在它们自己的行上开始:voidfunc(){if(...){printf("TaDa\n");}}但我希望它在大括号为空时保持在一行中。(主要用于ctors):Bar::Bar(intval):_val(val){}目前它看起来像这样:Bar::Bar(intval):_val(val){}有什么想法吗?(经过编辑以使情况更清楚) 最佳答案 更新:万岁!现在可以使用Clang5.0或更高版本的自定义BreakBeforeBraces。请参阅documentation中的Spli

c++ - 类中定义的友元函数模板是否可供查找? clang++ 和 g++ 不同意

代码如下:structfoo{templatefriendfoof(){return{};}};intmain(){autox=f();//clang++can'tfindit,g++can.}clang++3.4给出:fni2.cpp:8:12:error:useofundeclaredidentifier'f'autox=f();//clang++can'tfindit,g++can.^1errorgenerated.g++4.9.0编译它,但我不认为它应该有。This是一个相关的问题,但没有明确的答案。第15.4.2/2,4节对此进行了讨论,但它们都没有提及类内定义的友元函数模板

c++ - 如何查询clang++的默认include路径?

如何查询clang/clang++的默认include路径?我正在尝试使用自定义构建的clang编译器(支持OpenMP的编译器),但它似乎没有找到STL库:/usr/local/bin/clang++hello.cpphello.cpp:1:10:fatalerror:'iostream'filenotfound#include^1errorgenerated.通过使用IDE,回溯#includeiostream,最后使用-isystem选项,我得到了要在OSX10.9中编译的简单helloworld应用程序:/usr/local/bin/clang++-isystem/Librar

c++ - 有没有办法配置 clang-format 以将嵌套的命名空间声明保持在同一行?

在我工作的代码库中,我们总是这样声明嵌套的命名空间:namespacefoo{namespacedetail{//stuff}}//foo::detailnamespace我还没有找到一种方法来配置clang-formatnot将其分成多行:namespacefoo{namespacedetail{//stuff}}//foo::detailnamespace我试过BreakBeforeBraces配置,我研究了clang3.8中新的BraceWrapping配置,但都没有成功。是否可以在不使用//clang-format[on/off]注释代码的情况下执行此操作?

c++ - El Capitan 下 Xcode 中的 clang-omp

我喜欢在使用Xcode作为IDE的C++项目中使用openmp。不幸的是,Apple的Clang编译器不支持openmp(seehere),所以我安装了clang-omp.我完全按照该网站上给出的说明在Xcode中使用它,但我收到错误消息can'texec'/usr/local/bin/clang++-omp'(Nosuchfileordirectory)。我尝试通过终端编译他们网站上给出的简单示例,当我通过clang-omp++-fopenmpfile.cpp编译它时,我让它工作了。对我来说,Xcode似乎应该搜索/usr/local/bin/clang-omp++(与/usr/lo

c++ - 为什么 clang 不允许通过实例访问嵌套的枚举类?

考虑以下代码:structS{enumclassEnumClass{one};enumEnum{one};};intmain(){Ss;S::EnumClasse=s.EnumClass::one;//一切都适用于GCC,但clang(既不是3.8也不是3.9)不编译s.EnumClass::one,给出错误:'S::EnumClass::one'is不是“S”类的成员。鉴于无范围枚举工作正常的事实,这似乎是一个错误。 最佳答案 这是gcc1中的错误。相关措辞在[expr.ref]p2:Ineithercase,theid-expr

c++ - 删除的构造函数 - MSVC 报告错误,Clang 没有

考虑以下代码:classSILPassPipelinePlanfinal{public:SILPassPipelinePlan()=default;~SILPassPipelinePlan()=default;SILPassPipelinePlan(constSILPassPipelinePlan&)=default;SILPassPipelinePlan(SILPassPipelinePlan&&)=delete;SILPassPipelinePlanx(){SILPassPipelinePlanP;returnP;}};intmain(){return0;}MSVC报如下错误:1>

c++ - omp 临界区后是否存在隐式 Barrier

在omp临界区之后是否存在隐式omp屏障例如,我可以将以下代码版本1修改为版本2吗?版本-1intmin=100;#pragmaompparallel{intlocalmin=min;#pragmaompforschedule(static)for(inti=0;i版本2intmin=100;#pragmaompparallel{intlocalmin=min;#pragmaompforschedule(static)nowaitfor(inti=0;i版本1和版本2会得到相同的结果吗?omp临界区后是否存在隐式屏障?编辑:如果这个例子很差,我很抱歉。另外,我想知道版本1和版本2之间是