草庐IT

c++ - 如何使用 clang 格式分隔 lambda 的尾随返回类型

有几件事阻止我切换到clang格式。当我在应该换行到下一行的lambda上有一个尾随返回类型时,箭头和尾随返回类型之间没有空格。我该如何解决这个问题?例如,这是下面相同代码的未格式化版本的clang-format的输出autofunc(){return[.......](autoone,autolong_parameter_list,autoanother)->SomeLongReturnType;//^^^^^^^^^^^^^^^^^^^^^HowcanIaddaspaceinbetweenthose?} 最佳答案 TL;TR:升

c++ - 在 CUDA 源文件上使用 clang-tidy

存在多种专为C/C++设计的静态分析工具,但它们对于测试CUDA源代码并不是特别有用。自clangversion6能够编译CUDA,我想使用clang-tidy检查我的选项,它似乎没有切换架构的选项。有没有办法让它工作?例如用于打开CUDA解析器的编译时开关、自定义检查形式的扩展,或者它可能是计划中的功能? 最佳答案 基于clang的工具的一个问题是它们不以与clang完全相同的方式解析文件。第一个问题是,与C/C++编译不同,CUDA编译对源码进行了多次编译。默认情况下,当您给它一个CUDA文件时,clang会创建多个编译作业,并

c++ - Clang 静态分析器检查一个函数是否被调用了两次

我有一个新的自定义检查器(TransactionChecker.cpp)。这是交易状态:structTransactionState{private:enumKind{OpenedT,StartedT,FinalizedT,ClosedT}K;TransactionState(KindInK):K(InK){}public:boolisOpened()const{returnK==OpenedT;}boolisClosed()const{returnK==ClosedT;}boolisStarted()const{returnK==StartedT;}boolisFinalized()

c++ - 哪些 clang-tidy 检查提供自动修复?

我想找出哪些clang-tidy检查可以使用-fix选项运行,即自动生成固定代码。我知道所有的modernize-*检查都可以做到这一点,其他一些检查也可以(比如google-readability-casting),但我没有找到完整的列表。某处有list吗?或者除了阅读每张支票的来源之外还有其他方法可以找出答案? 最佳答案 编辑:自clang-tidy10起,修复选项包含在documentation.的检查列表中。我的其余答案对版本9及更低版本仍然有效。grep--include=\*.cpp-rc'./'-e"FixItHint

c++ - 隐式转换产生 "error: taking address of temporary"(GCC vs clang)

在试验强类型整数时,我遇到了一个来自GCC8.2的奇怪错误:error:takingaddressoftemporary我可以想象上述错误有意义的典型场景,但在我的情况下我没有遇到问题。重现错误的缩小(人为)示例如下:#include#includeenumclassEnum:std::size_t{};structPod{std::size_tval;constexproperatorEnum()const{returnstatic_cast(val);}};templateconstexprvoidfoo(){usingFoo=std::integral_constant;//[G

c++ - gcc 与 clang : expanding a captured parameter pack twice

考虑这个代码片段:intmain(){autofirst=[&](auto...one){autofaulty=[&](){[[maybe_unused]]autoi=(one+...);return(one+...);};faulty();};first(1);}另见ongodbolt.似乎当我尝试在内部lambda中将隐式捕获的参数包one扩展两次时,gcc会提示,但clang不会。请注意,当我明确捕获时,例如[&one...],gcc不再提示。对我来说,这看起来像是一个gcc错误,但我想得到比我更有经验的人的一些确认,因为我已经在带有可变捕获的clang中看到(不同的)错误行为h

c++ - 使用clang分析C++代码

我们想对用户的C++代码进行一些相当简单的分析,然后使用该信息来检测他们的代码(基本上是用一些检测代码重新生成他们的代码),以便用户可以对其代码进行动态分析并获得有关某些数字类型的值范围之类的统计信息。clang现在应该能够处理足够多的C++来处理我们的用户会向它抛出的代码类型——而且由于clang的C++覆盖范围在我们完成时不断改进,它会更好。那么如何将这样的clang用作独立的解析器呢?我们在想我们可以只生成一个AST,然后遍历它来寻找我们有兴趣跟踪的类的对象。有兴趣听取其他使用没有LLVM的clang的人的意见。 最佳答案 c

c++ - 代码在带有警告的 g​​++ 上编译,但在 clang3.1(Xcode 4.3.3) 上给出相同代码的错误

下一行在g++上编译成功,但在clang::上出错static_assert(tBitsg++警告::therearenoargumentsto'static_assert'thatdependonatemplateparameter,soadeclarationof'static_assert'mustbeavailableclang错误::useofundeclaredidentifier'static_assert';didyoumean'static_cast'?请帮帮我。来自评论的函数声明:templateHRESULTDoIO(std::bitset&bitsetToSer

c++ - 使用 Clang 工具解析 C++ 标准头文件时出错

我正在使用clang工具来解析位于/usr/lib/gcc/x86_64-linux-gnu/4.7/string中的标准头文件。但是我收到以下错误。Infileincludedfrom~/PrototypeWork/user/header.hpp:3:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/string:41:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7

Python clang 不搜索系统包含路径

当从Python使用libclang时,它似乎不会自动搜索系统的包含路径。是否有可靠的方法来获取这些路径?我不喜欢硬编码路径,因为我编写的代码将在各种UNIX系统上运行。例如给定test.cpp#includeintmain(){puts("Hello,world!");}和测试.pyfromclang.cindeximportIndextu=Index.create().parse(None,["test.cpp"])print(list(tu.diagnostics))运行pythontest.py将打印:[,spelling"'stdio.h'filenotfound">]当然可