草庐IT

clang-omp

全部标签

c++ - 如何使用 clang 在 Mac OS X 上获得新的 C++ 线程支持?

我只想使用Appleclang版本4.1(tags/Apple/clang-421.11.66)在MacOSX10.8上编译以下程序:#includeusingnamespacestd;intmain(){cout但是我得到:../src/FirstCAgain.cpp:13:10:fatalerror:'thread'filenotfound#include我启用了c++11支持并且我正在使用EclipseC/C++开发工具。问题是:如何在MacOSX上获得新的C++线程支持? 最佳答案 您需要使用新的libc++,这不是默认设置

c++ - 使用 Clang 构建 V8 并发出 LLVM IR

我正在尝试使用Clang构建V8Javascript引擎并输出.ll文件。我正在尝试合并信息here和here去做这个。但是,当我尝试make时,它失败了,显示“Noruletomaketarget”。我搞不清楚了。我试过只编译v8.cc,但完全失败了。我想这是因为我试图通过将它作为编译器放入来强制-emit-llvm,但我不确定。$cdv8$exportCXX="clang++-S-emit-llvm"$exportCC="clang-S-emit-llvm"$exportCPP="clang-E-S-emit-llvm"$exportLINK="clang++-S-emit-llv

c++ - Clang 真的有这么聪明吗?

如果我使用-O3-fno-vectorize使用Clang3.3编译以下代码,即使删除注释行,我也会得到相同的汇编输出。代码类型将所有可能的32位整数双关语为float,并对[0,1]范围内的整数进行计数。Clang的优化器是否真的足够聪明,能够意识到0xFFFFFFFF在双关语为float时不在[0,1]范围内,因此完全忽略对fn的第二次调用?当第二个调用被移除时,GCC产生不同的代码。#include#include#includetemplateinlineTOpunning_cast(constFROM&input){TOout;std::memcpy(&out,&input,

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