草庐IT

C++ 程序不使用 Clang 和 visual Studio 2010 Express 编译

我正在尝试使用VisualC++2010Express编译本教程中所述的源代码。http://kevinaboos.wordpress.com/2013/07/23/clang-tutorial-part-ii-libtooling-example/完整的源代码在这里。https://github.com/kevinaboos/LibToolingExample我已使用此链接中提供的可执行文件来安装LLVM。由于格式问题,我无法发布完整的错误消息。但我会尽量提供尽可能多的信息。当我尝试构建解决方案时,出现以下错误:-argumentunusedduringcompilationwarn

c++ - clang 和 g++ 在处理 const 对象时的差异

这个问题在这里已经有了答案:Whydoesgccallowaconstobjectwithoutauser-declareddefaultconstructorbutnotclang?(1个回答)关闭8年前。考虑代码:structFoo{intx=10;};intmain(){constFoofoo;}它在g++下编译http://coliru.stacked-crooked.com/a/99bd8006e10b47ef,但是在clang++http://coliru.stacked-crooked.com/a/93f94f7d9625b579下会报错:error:defaultini

c++ - 模板忽略 [[nodiscard]] 属性

应用于函数时,[[nodiscard]]属性鼓励编译器在被丢弃的表达式中使用而不是强制转换为void时发出警告。示例:[[nodiscard]]intcallable_return_not_discardable(intn){returnn;}intmain(){callable_return_not_discardable(0);//warning/error://ignoringreturnvalueof'intcallable_return_not_discardable(int)',//declaredwithattributenodiscard[-Wunused-result

c++ - 在 Clang 中判断访问的 CXXRecordDecl 是类、结构还是 union

我使用Clang从C++源代码构建AST,并使用RecursiveASTVisitor遍历树。我想在记录的访问声明中决定它是类、结构还是union。我有一个覆盖函数VisitCXXRecordDecl(clang::CXXRecordDecl)。在这个函数中我可以checkanyinformationaboutCXXRecordDecl该类(class)提供的信息,但我不知道如何获取这些信息。谁能帮帮我? 最佳答案 只需使用isStruct,isClass,和isUn​​ion成员函数,或者调用getTagKind得到一个TagKi

c++ - Xcode 4.5 和 OpenMP with Clang (Apple LLVM) 仅使用一个内核

我们在一个C++11项目上使用Xcode4.5,我们使用OpenMP来加速我们的计算:#pragmaompparallelforfor(uintx=1;x虽然事件监视器显示程序使用了多个线程,但我们观察到只使用了一个内核:我们还在使用GCC4.7的Ubuntu上运行相同的代码,我们观察到所有内核上的争用。可能是AppleLLVM中删除了OpenMP支持吗?是否有OpenMP的替代方案?我们无法切换到GCC,因为我们使用C++11功能。 最佳答案 编辑:此答案现已部分过时。现代ClangsupportOpenMP,只是不是Apple随

c++ - AFAIK,下面的代码不应该编译,但它在 clang 和 GCC 中编译。我在这里错过了什么?

下面的代码显示了一个带有非平凡默认构造函数的类union类(成员y是用brace-or-equal-initializer初始化的),所以如果默认了此类类的默认构造函数,则应根据§12.1/5第一个要点将其删除。也就是说,声明Tt;不应编译,因为unionT没有默认构造函数。但是codecompilesandexecutes在clang和GCC中。#includeunionT{inty{1};floatx;charc;T()=default;};intmain(){Tt;std::cout编辑我上面的问题从一开始就错了,因为unionT不是类union类。我刚刚了解到C++11中的§9

c++ - Clang 与 gcc std::crbegin with boost::iterator_range

使用libc++的Clang3.8.1编译以下程序:#include#include#include#include#includeintmain(){conststd::vectorv{1,2,3};constautorange=boost::make_iterator_range(v);std::copy(std::crbegin(range),std::crend(range),std::ostream_iterator{std::cout,""});std::cout但是带有libstdc++的gcc6.1.0没有。gcc错误的第一行是:error:nomatchingfunc

c++ - 关于 C++ 编译器的几个问题 : GCC, MSVC、Clang、Comeau 等

我有几个关于C++编译器的问题C++编译器是否需要one-passcompiler?标准是否在任何地方谈论它?特别是GCC是一次性编译器吗?如果是,那么为什么它会在thisexample中生成以下错误两次(尽管每个错误消息中的模板参数都不同)?error:declarationof‘adderitem’shadowsaparametererror:declarationof‘adderitem’shadowsaparameter一个更一般的问题one-passcompiler的优点和缺点是什么?和multi-passcompiler?有用的链接:AListofC/C++compiler

c++ - 如何使用 android-ndk 优化 native 代码(速度优化)

我正在使用cygwin和Windows7编译native代码。我在网上得到了很多优化技巧。APP_OPTIM:=releasendk-buildNDK_DEBUG=0-DNDEBUGLOCAL_CFLAGS+=-O2但我不明白如何在Application.mk和Android.mk上设置这些。我通过应用上述技巧尝试了很多案例。但是,我不认为优化应用于我的native代码。应用程序.mkAPP_PROJECT_PATH:=$(shellpwd)APP_MODULES:=native_libAPP_OPTIM:=releaseAPP_BUILD_SCRIPT:=Android.mkAPP_

c++ - 在 llvm 的 IR 代码中添加函数调用

你能给我一个例子,说明如何添加一个简单的函数调用吗foo(x);在llvm中通过我的IR代码? 最佳答案 一个简单的学习方法就是使用ELLCC将输出选项作为LLVMC++API代码。两个要点:确保foo的定义可用;否则你需要首先定义它。通常,您需要使用getOrInsertFunction然后使用IRBuilder插入body为功能。创建CallInst,一个简单的方法是使用CallInst*IRBuilder::CreateCall(Value*,ArrayRef,constTwine&).这是我之前为llvm3.4写的一段;希望