草庐IT

clang-format

全部标签

c++ - 不允许 clang 变量名中的 Unicode/特殊字符?

Thisquestionhasunicodetextthatmaynotdisplaycorrectlyinallbrowsers.clang现在(>3.3)在变量名中支持unicode字符http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features.但是一些特殊字符仍然被禁止。intmain(){doubleα=2.;//alpha,ok!double∞=99999.;//infinity,error}给予:error:non-ASCIIcharactersarenotallowe

c++ - 设置 IndentWidth 在 clang 格式中不起作用

我的主目录中有.clang-format并设置indentwidth4如下。BasedOnStyle:LLVMStandard:Cpp11IndentWidth:4TabWidth:4UseTab:Never但是当我使用clang-format-style='~/.clang-format'a.cpp格式化我的代码时,缩进宽度变为2。例如://Seethisindentwidth2.Theoriginalfilehaswidth4,//butclang-formatchangesittowidth2.intmain(intargc,charconst*argv[]){Aa;a.bar(

c++ - clang 格式,数组初始化器

在我们的项目中,我们有时在一行中初始化数组,有时我们将它们初始化为block。那就是strings::UniCharconsts[]={'H','e','l','l','o'};对比strings::UniCharconsts[]={'H','e','l','l','o'};我希望clang-format能够区分这两种类型,而不是将第二种类型转换为第一种类型或在左大括号之后对齐元素。不是这样的:strings::UniCharconsts[]={'H','e','l','l','o'};有没有办法使用配置文件来实现? 最佳答案 在最

c++ - 有没有办法强制使用 "this->"用于 clang-format/clang-tidy 中的类成员/方法?

我到处搜索,但我可能用错了术语。我还没有为此找到选项。我唯一发现的是这个未回答的问题(但是有点宽泛):CPPlint:Canyouenforceuseofthisforclassvariables?. 最佳答案 鉴于existingoptions,我不相信这在clang-format中是可能的,future也不会。主要原因是程序的工作方式。它不会将C++代码解析为AST,而是将文本标记化而不需要包含(定义它的成员和全局变量)而不是编译数据库(影响定义、包含路径……)它是甚至可以给它一段代码并重新格式化。从问题的性质来看,如果它可以存

c++ - 自定义支持 __attribute__((format))

GCC和Clang都支持对可变参数函数(如printf)进行编译时检查。这些编译器接受如下语法:externvoiddprintf(intdlevel,constchar*format,...)__attribute__((format(printf,2,3)));/*2=format3=params*/在OSX上,Cocoa框架还使用了NSString的扩展:#defineNS_FORMAT_FUNCTION(F,A)__attribute__((format(__NSString__,F,A)))在我们公司,我们有一个自定义的C++框架,其中包含一堆类,例如BaseString,它

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++ - 在 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