草庐IT

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

c++ - G++ 与 Clang : inconsistent behavior for constexpr and const

考虑以下代码:constexprconstintA=42;constint&B=A;static_assert(&A==&B,"Bug");constexprconstint&C=B;static_assert(&A==&C,"Bug");intmain(){return0;}它被clang版本3.3完全接受,而g++(SUSELinux)4.8.120130909[gcc-4_8-branchrevision202388拒绝它:bug2.cpp:5:1:error:non-constantconditionforstaticassertionstatic_assert(&A==&B,

c++ - std::map 非常量仿函数,clang++ 下编译时错误,g++ 正常

我很好奇是否有人知道为什么g++编译下面的代码但是clang++给出错误。该代码创建一个std::map使用自定义排序仿函数SortCriterion.可以通过SortCriterion的构造函数指定排序类型:升序或降序。key比较通过operator()(int,int)实现.在g++下编译和运行一切正常,即使有-Wall,-Wextra,Wpedantic等等然而,clang++调用insert时出现错误功能,并提示const比较运算符的-ness,即想要operator()(int,int)const.note:candidatefunctionnotviable:'this'a

c++ - 命名空间与包含的类同名,gcc 可以,clang 不行

考虑代码:templateclassFoo{};namespaceX{classX{};}usingnamespaceX;//nowbothclassXandnamespaceXarevisibleFoof(){return{};}intmain(){}gcc5.2编译代码没有任何错误。然而clang吐出错误:error:'X'isnotaclass,namespace,orenumerationFoof()error:referenceto'X'isambiguous根据C++标准,代码在语法上是否有效?或者只是一个gcc错误?删除限定名称X::X并使用Foo相反也让gcc窒息err