草庐IT

clang_complete

全部标签

c++ - 使用 Clang 的 libtooling 匹配#includes(或#defines)的正确方法是什么?

我正在编写一个libtooling重构工具。我有一个类,比方说Foo,定义在名为foo.h的header中。我想看看foo.h是否包含在文件中。目前,为了检查bar.cc是否包含foo.h,我只是使用recordDecl(hasName("Foo"))进行匹配。这是有效的,因为classFoo{...};将在预处理后存在于bar.cc的AST中,如果bar.cc包含foo.h.但是,如果bar.cc包含cat.h,而cat.h包含foo.h,则此方法无效。我希望bar.cc明确包含foo.h。此外,我希望能够匹配#define宏。我编写工具的方式使这两个目标变得不可能,因为我匹配的AS

c++ - 函数模板 : clang rejects, gcc 接受的从属名称查找

考虑以下片段:structX{};namespacefoo{templatevoidbar(){T{}();}clang拒绝此代码,gcc接受它。这是gcc错误还是clang错误? 最佳答案 我相信这是一个gcc错误,归档为70099.来自[temp.dep.res]:Inresolvingdependentnames,namesfromthefollowingsourcesareconsidered:(1.1)—Declarationsthatarevisibleatthepointofdefinitionofthetemplat

c++ - Clang、std::shared_ptr 和 std::less/operator<

有如下代码#includeintmain(){std::shared_ptrptr0(newint);std::shared_ptrptr1(newint);boolresult=ptr0在用clang(version3.1,LLVM3.1,DebianGNU/LinuxSid)编译时产生以下错误/usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr.h:364:14:error:nomatchingfunctionforcalltoobjectoftype'std::le

c++ - 无法抑制 Mac OS X 上的特定 clang 警告

我已经设置了-Wno-unused-parameter(和其他一些)编译器标志,它确实被传递给了编译器,但我仍然收到这个警告:clang++-c-pipe-Wno-self-assign-Wno-unused-parameter-Wno-unused-variable-g-gdwarf-2-archx86_64-fPIC-Wall-WF/Library/Frameworks-o../build/cobject.osrc/cobject.cpp^src/cobject.cpp:102:68:warning:unusedparameter'client'[-Wunused-paramete

c++ - 在 Clang 中禁用 "cast from pointer to smaller type uint32_t"错误

我正在从事一个学校项目,该项目涉及在实验硬件上移植一大段C++代码。不幸的是,该硬件是64位的,并且代码包含许多指针算术实例,这些实例期望指针是32位的,即它通常是reinterpret_cast(ptr)。.一个一个地浏览它们会非常乏味,而且由于无论如何这是一个实验项目,我很乐意接受一个“hackish”的解决方法。因此,我修改了malloc的实现,以确保它永远不会分配超过4GB限制的内存。因此,从技术上讲,这些类型转换应该是有效的。问题是,我该如何向Clang解释这一点?我得到的错误是:error:castfrompointertosmallertype'uint32_t'(aka

c++ - 如何将包含路径添加到 flycheck c/c++-clang?

我尝试将包含路径添加到flycheckc/c++-clang,但没有成功。我将foo.h放在~/local/include中,并将以下行添加到init.el:(add-hook'c++-mode-hook(lambda()(setqflycheck-clang-standard-library"libc++")))(add-hook'c++-mode-hook(lambda()(setqflycheck-clang-language-standard"c++1y")))(add-hook'c++-mode-hook(lambda()(setqflycheck-clang-include

c++ - gcc 和 clang 抛出 "no matching function call"但 msvc (cl) 编译并按预期工作

我写了一个小的函数模板,将不同的容器连接到一个新的容器中:#include#include#include#include#includenamespaceimpl{templatevoidjoin(OutIteratoriterator,constContainer&container,constContainers&...containers){for(constauto&item:container)*iterator++=item;join(iterator,containers...);//gccandclangcannotresolvethiscall}templatevo

c++ - 使用 Clang 编译时的最大错误数

当我尝试将'-fmax-errors=n'选项与clang++一起使用时,会输出以下警告:clang:warning:argumentunusedduringcompilation:'-fmax-errors=2'clang的等价物是什么? 最佳答案 等效的clang标志是-ferror-limit:clang-ferror-limit=2test.c 关于c++-使用Clang编译时的最大错误数,我们在StackOverflow上找到一个类似的问题: htt

带有继承的 C++11 代码不能用 clang 编译

我有一个代码如此简单的小程序:namespaceoverride{usingfinal=void();}namespacefinal{usingoverride=void(int);structfinal{virtualoverrideoverride;virtual::override::finaloverride;};}intmain(){structfinalfinal:::final::final{::final::overrideoverrideoverridefinal;::override::finaloverridefinaloverride;};//doesn'tco

c++ - 包括带有 Clang/LLVM 的 C++ 11 头文件

我已经从源代码安装了clang和llvm,并且正在尝试使用新标准的特性编译一些C++代码。我发现,例如使用forranges例如for(i:vector)工作正常,当我需要导入标题时遇到问题(找不到头文件),例如或.我是否需要使用新的libc++才能使用这些header,或者我是否需要进行简单的构建更改?目前,我刚刚将clang和llvm构建到我的主目录中的一个文件夹中,并从那里调用clang++。 最佳答案 参见http://clang.llvm.org/get_started.html.IfyouintendtoworkonCl