草庐IT

clang-omp

全部标签

c++ - Windows clang Hello World lnk4217

我已经安装了clang6.0版以及VisualStudio2017。我正在编译一个简单的“helloworld”应用程序:#includeintmain(){std::cout使用clanghello.cpp这给了我警告:hello-d1b2c6.o:warningLNK4217:locallydefinedsymbol__std_terminateimportedinfunction"int`public:staticunsigned__int64__cdeclstd::char_traits::length(charconst*const)'::`1'::dtor$2"(?dtor

c++ - 为什么 clang 不使用自动返回类型省略此函数中的拷贝?

我发现了一个案例,其中clang8.x没有省略gcc和msvc没有问题的模板化类对象的拷贝。在我的实际应用程序中,这个多余的拷贝非常昂贵,所以我试图深入了解这一点,并最终更好地理解在C++17中何时执行和不执行复制省略。问题显示在下面的代码片段中。返回命名类对象的自动返回类型声明的函数在其主体中有一个额外的拷贝构造。如果返回被重新编码为返回一个未命名的临时变量,则会发生省略。如果函数被重新编码以显式返回类的实例(而不是自动),则会发生省略。如果结构A没有模板参数,那么也会生成完全省略的代码。问题显示是否一切都是noexcept或允许内联(NOINLINE是为了让您无需执行代码就可以在G

c++ - 使用元编程的私有(private)成员存在性测试,GCC vs clang,哪个是对的?

这更像是一个C++标准问题。考虑以下代码:templateclasshas_Data{typedefcharone;typedeflongtwo;templatestaticonetest(typeof(&C::Data));templatestatictwotest(...);public:enum{value=sizeof(test(0))==sizeof(char)};};classMyClass{private:structData{};};voidfunction(boolval=has_Data::value){}以上代码适用于gcc(GCC)4.4.3但是clang版本3

c++ - 表达式不是积分常量 clang libc++ threading

我试图在我的linux机器(ubuntu)上编译一个非常简单的线程程序,但即使我指定了libc++,clang似乎仍然向我抛出错误。我的程序是:#include#includevoidcall_from_thread(){std::cout生成文件:CC=clang++CFLAGS=-std=c++11-stdlib=libc++-pthread-c-Wall#properdeclarationoflibc++,butstillanerror...LDFALGS=SOURCES=main.cppOBJECTS=$(SOURCES:.cpp=.o)EXECUTABLE=bimapall:

c++ - Windows 上的 clang 和 <iostream>

根据http://clang.llvm.org/get_started.html我在Windows上使用VisualStudio2010执行了ALL_BUILD,并使用$PATH=...ClangSourcBuildPath...\build\bin\Release将构建的内容添加到我的系统路径中我现在可以在控制台上编译以下文件:$>clangfile_c.c//file_c.c#includeintmain(){printf("helloworld\n");return0;}但是如果我对以下文件($>clangfile_cpp.cpp)执行相同的操作://file_cpp.cpp#i

c++ - 用于解释自定义 c++11 属性的 Clang/GCC 插件

我正在尝试为clang或gcc编写一个插件来解释自定义[[cxx11::attributes]]并基于此生成一些代码。从4.5版本开始,gcc支持几乎在每个编译步骤都可以Hook的插件。但是,我认为gcc不太清楚如何修改它的AST并在其中导航(至少我在尝试时遇到了麻烦......)。然后我想起clang被设计成可以扩展并用作库,于是我试了一下。在四处挖掘之后,我发现一些主题说clang不支持自定义属性。我哭了。我的主要目标是根据用户可以在代码中使用的任何类型的注释生成代码。我想使用c++11属性,因为它们非常清晰。Pragma也是一种选择,但它们有一些限制。问题如下:1)是否真的(目前

c++ - 编译 clang-llvm 示例

我正在尝试编译Hello目录lib/Transforms/Hello中的示例,它基本上是LLVMpass的HelloWorld,但是当我尝试使用make编译它时出现以下错误。../../../Makefile.common:61:../../../Makefile.config:Nosuchfileordirectory../../../Makefile.common:69:/Makefile.rules:Nosuchfileordirectorymake:***Noruletomaketarget`/Makefile.rules'.Stop.知道问题是什么以及如何解决吗?

c++ - 如何使用 Python 绑定(bind)到 Clang 解析单个文件?

我正在编写一个简单的工具来帮助重构我们应用程序的源代码。我想基于wxWidgets库解析C++代码,它定义了GUI并生成XML.ui文件以与Qt一起使用。我需要获取所有函数调用和参数值。目前我正在尝试使用Python绑定(bind)到Clang,使用下面的示例代码我获得了标记及其种类和位置,但游标种类始终是CursorKind.INVALID_FILE。importsysimportclang.cindexdeffind_typerefs(node):"""Findallreferencestothetypenamed'typename'"""fortinnode.get_tokens

c++ - 确定 clang 和 cmake 定义了哪些宏的最佳方法

我目前正在尝试通过使用名为Emscripten的惊人LLVM->Javascript项目将CGAL转换为Javascript。我只是用核心组件来做这件事(不是ImageIO或Qt的东西)我已经设法通过它的两个依赖项(GMP和MPFR)做到了这一点。令我惊讶的是,我能够将C测试类编译为Javascript(针对以位码形式生成的LLVM库),其在nodejs中运行的输出与native结果精确匹配。所有其他依赖项都是仅header(Eigen、Boost),除了一个-libboost-thread。现在,显然JS是单线程的,所以希望能够从CGAL代码中删除它。幸运的是,有一个CGAL_HAS

c++ - Clang 的写法中的 "annotated fallthrough"和 "partly annotated method"是什么?

我正在将Clang错误消息翻译成另一种语言,在文件底部附近我发现了以下条目:defwarn_unannotated_fallthrough:Warning,InGroup,DefaultIgnore;和defwarn_unannotated_fallthrough_per_function:Warning,InGroup,DefaultIgnore;我试图搜索这些警告的提及,并找到了这个代码片段:intfallthrough(intn){switch(n/10){case0:n+=100;-case1://expected-warning{{unannotatedfall-throug