草庐IT

clang-omp

全部标签

c++ - 如何使用 C API 而不是实际知道 Clang 的书面 var 类型?

我正在尝试通过CAPI使用Clang,详细索引。问题是某些类型不是按编写的那样返回,而是按编译器返回。例如“Stream&”变成“int&”,“byte”变成“int”。一些测试库://TODOmakeitasubclassofagenericSerial/StreambaseclassclassFirmataClass{public:FirmataClass(Stream&s);voidsetFirmwareNameAndVersion(constchar*name,bytemajor,byteminor);我正在使用代码获取方法信息:voidshowMethodInfo(const

c++ - Clang 和 GCC 误推模板参数

我不擅长C++,所以这可能是一个新手错误。我正在尝试制作一个异构链表类型,其中每个节点的类型和列表其余部分的类型在每个节点中都是已知的。这是一个SSSCE:#includetemplatestructhnode{Tdata;hnode*next;};templatestructhnode{Tdata;std::nullptr_tnext;};templatehnodehcons(T&&val,std::nullptr_t){return{std::forward(val),nullptr};}templatehnodehcons(T&&val,hnode&next){return{st

c++ - 如何从 clang AST 节点打印源位置

我正在松散地遵循http://clang.llvm.org/docs/LibASTMatchersTutorial.html上的教程.我设法创建了一个匹配类定义的AST匹配器,我的MatchFinder看起来像这样classClassDeclPrinter:publicMatchFinder::MatchCallback{public:virtualvoidrun(constMatchFinder::MatchResult&result)override{if(clang::NamedDeclconst*nd=result.Nodes.getNodeAs("id")){nd->dump

c++ - 为什么我收到 clang 警告 : no previous prototype for function 'diff'

我的代码中有以下声明://Centraldifffunction,makestwofunctioncalls,O(h^2)REALdiff(constREALh,constREALx,REAL(*func)(constREAL)){//diff=f(x+h)-f(x-h)/2h+O(h^2)return((*func)(x+h)-(*func)(x-h))/(2.0*h+REALSMALL);}这在“utils.h”文件中。当我使用它编译测试时,它会给我:clang++-Weverythingtests/utils.cpp-otests/utils.oInfileincludedfro

c++ - 在 clang 中实例化后的静态成员初始化

此类代码可以通过GCC编译,但clang3.5失败。#includeusingnamespacestd;templateclassC{public:conststaticintx;};intmain(){cout::x;}templateconstintC::x=4;Clang返回消息:hello.cpp:15:19:error:explicitspecializationof'x'afterinstantiationconstintC::x=4;^hello.cpp:11:19:note:implicitinstantiationfirstrequiredherecout::x;^是

c++ - 使用替换的 operator new 进行 Clang 链接时优化会导致 valgrind 中的 free()/delete 不匹配

当将clang3.5.0与-flto一起使用并与共享库链接时,似乎在共享库中调用operatordelete不遵循与调用相同的符号解析顺序来自主要对象的code>operatornew。示例:共享.cpp:voiddeleteIt(int*ptr){deleteptr;}ma​​in.cpp:#include#includevoid*operatornew(size_tsize){void*result=std::malloc(size);if(result==nullptr){throwstd::bad_alloc();}returnresult;}voidoperatordelet

c++ - 在C++14模式下用clang for libstdc++编译regex程序报错

我编译了clang3.6.0(trunk219085)和g++4.9.1.为了使用正确的libstdc++(6.0.20),而不是我系统中的那个,我有这些环境变量:set-xLD_LIBRARY_PATH/home/remyabel/gcc-4.9.1/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/usr/local/libset-xPATH~/install/gcc-4.9.1/bin/home/remyabel/llvm/build/Release+Asserts/bin/home/remyabel/llvm/build/Relea

c++ - 使用 clang/g++ 时 __m256i 数组的段错误

我正在尝试生成__m256i的数组以在另一个计算中重用。当我尝试这样做时(即使是最小的测试用例),我也会遇到段错误——但前提是代码是用g++或clang编译的。如果我使用Intel编译器(版本16.0)编译代码,则不会发生段错误。这是我创建的测试用例:intmain(){__m256i*table=new__m256i[10000];__m256izeroes=_mm256_set_epi64x(0,0,0,0);table[99]=zeroes;}用clang3.6和g++4.8编译上述代码时,出现段错误。这是英特尔编译器生成的程序集(来自https://gcc.godbolt.or

c++ - 程序使用 clang++ 编译,但 g++ 耗尽 RAM 并失败

我考虑了引入的基于C++11的枚举位集here.我想出了一些示例程序:#include#include#includetemplateclassFlagSet{private:usingTUNDER=typenamestd::underlying_type::type;std::bitset::max()>m_flags;public:FlagSet()=default;FlagSet(constFlagSet&other)=default;};enumclassTest{FIRST,SECOND};intmain(intargc,char*argv[]){FlagSettestFla

c++ - 当 static_cast'ing 为仅移动类型时,Clang 与 GCC

考虑以下简单的仅移动类:structbar{constexprbar()=default;bar(barconst&)=delete;bar(bar&&)=default;bar&operator=(barconst&)=delete;bar&operator=(bar&&)=default;};现在,让我们创建一个包装器:templatestructbox{constexprbox(T&&x):_payload{std::move(x)}{}constexprexplicitoperatorT()&&{returnstd::move(_payload);}private:T_payl