草庐IT

Clang-Format

全部标签

c++ - 获取 Clang 中变量的大小

使用Clang库,是否有一些可用的方法来获取变量的大小(就像我在常规C/C++程序中使用sizeof()一样?我能够(这就是我想做的)发现VarDecl,但目前我仍然无法在Clang命名空间中找到任何方法来获取我的var的大小发现了当前的VarDecl 最佳答案 类型的大小信息存储在与给定类型关联的TypeInfo中。您可以通过getTypeInfo函数从ASTContext中获取对应的FieldInfo对。该对的第一个元素是类型的大小(以位为单位)。第二个元素是以位为单位的类型对齐。boolVisitVarDecl(VarDecl

c++ - 在 clang 中循环展开

我正在尝试有选择地展开以下程序中的第二个循环:#includeintmain(){intin[1000],out[1000];inti,j;#pragmanounrollfor(i=100;i当我使用以下选项运行clang(3.5)时,它会展开两个循环4次。clang-std=c++11-O3-fno-slp-vectorize-fno-vectorize-mllvm-unroll-count=4-mllvm-debug-pass=Arguments-emit-llvm-c*.cpp我做错了什么?此外,如果我添加-fno-unroll-loops,或跳过-unroll-count=4标

c++ - 构建 Clang 时未知包 libcxx 和 libcxxabi?

我正在尝试使用来自源代码的libc++构建Clang。我试图在树外将libc++与其他组件构建在一起。我使用的食谱如下。如果我只是将libcxx和libcxxabi放在树中,那么配置不会将它们拾取,而且它们不是自动构建的。我根据LLVM'slibc++StandardLibrary将它们放在llvm/projects中.此外,将makecxx添加到配方中并不像LLVM'slibc++StandardLibrary上宣传的那样有效页。结果是:llvm[0]:ConstructingLLVMBuildprojectinformation.make:***Noruletomaketarget

c++ - 我在这里做错了什么?或者这是一个 clang++ 错误?

以下代码无法在我的Mac上编译#include#includetemplateusingVector=std::array;templateTdot(constVector&l,constVector&r){Tresult{0};for(autoi=0;i;intmain(intargc,constchar*argv[]){Vector3fu{1.0f,2.0f,3.0f};Vector3fv{6.0f,5.0f,4.0f};std::cout这是我从终端编译的方式:clang++-std=c++11-stdlib=libc++repro.cpp-orepro这是我得到的错误:repr

c++ - 如何在 Clang 中获取 NamedDecl 的错位名称?

我正在使用Clang来解析一些C++代码。我想打印我遇到的每个FunctionDecl的名称和损坏的名称。通过将其添加到我的RecursiveASTVisitor,我可以很容易地打印函数名称:boolVisitFunctionDecl(FunctionDecl*f){autodeclName=f->getNameInfo().getName();autofunctionName=declName.getAsString();std::cout我怎样才能打印错位的名字?我按照Sebastian的指示生成的工作代码:constautogetMangledName=[&](FunctionD

c++ format cout with "right"and setw() for a string and float

我正在尝试格式化一个“cout”,它必须显示如下内容:Result$34.45金额($34.45)必须在右侧索引上,并带有一定数量的填充或在特定列位置结束。我尝试使用cout但是,它是为“$”字符串设置宽度,而不是为字符串加金额设置宽度。关于处理此类格式有什么建议吗? 最佳答案 您需要将"$"和值34.45组合成单独的字符串。像这样尝试:#include#include#include#includeusingnamespacestd;intmain(){stringstreamss;ss

c++ - 使用 gcc 或 clang 自动生成 header

给定源文件source.cpp我如何生成适当的headersource.hpp?我在linux64位下,我想避免手动编写header以减少我花在编写代码上的时间并限制可能的错误。 最佳答案 您无法从源文件自动生成适当的header,因为没有关于什么是适当的header的正式定义。特别是,从源文件中提取声明的工具无法知道声明是否应为翻译单元私有(private)或在其他翻译单元之间共享。在第一种情况下,标题中的声明恕我直言是不合适的。 关于c++-使用gcc或clang自动生成header

c++ - 如何让 scons 将 Clang 与 libc++ 一起使用?

如何让scons将Clang与libc++一起使用?将“-stdlib=libc++”放入我传递给环境的任何标志中会导致undefinedreference错误,如下所示:hello.o:Infunction`main':hello.cpp:(.text+0xc):undefinedreferenceto`std::__1::cout'hello.o:Infunction`std::__1::basic_ostream>&std::__1::endl>(std::__1::basic_ostream>&)': 最佳答案 选择libc

c++ - 在 Clang AST 中查找声明的父级

我正在使用clang进行一些分析,我需要在AST中找到声明的父级。例如,在下面的代码中,我有intx并且我想获取它的父级,这应该是函数声明:intmain(intx){返回0}我知道这个链接中提到的http://comments.gmane.org/gmane.comp.compilers.clang.devel/2152有一个ParentMap类来跟踪父节点。但是,这仅表示Stmt*->Stmt*的映射,我需要找到声明的父级。有谁知道我该怎么做? 最佳答案 您可以使用AstContext::getParents()来查找ast节点

c++ - 如何在 ubuntu 上使用可移植 Clang 设置 CLion?

我想在ubuntu中使用CLion测试Clang。默认情况下,Clion会检测我的gcc安装,但我想使用clang而不是gcc。此外,我不想通过apt-get安装clang。我已经从llvm网站下载了llvm,clang(3.6.2)二进制文件。我想使用那个可移植的clang二进制文件。这是我的系统设置:Ubuntu-14.04海湾合作委员会-4.8.4llvmclang-3.6.2(可移植)CLion-1.0.4那么这里如何使用llvm-clang设置CLion? 最佳答案 我从CLion博客得到了答案,它有效,现在就开始了。要提