草庐IT

clang-format

全部标签

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

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

c++ - Visual Studio C++ "Automatically format completed block on }"

VisualStudio具有适用于C#的此设置,但我找不到适用于C++的设置。“在}上自动格式化完成的block”我在处理C#内容时经常使用此功能,现在我又回到了C++(我更喜欢),我想念这个功能。我该如何设置?我想此时我必须使用第3方插件或其他东西,但我在所有搜索中找不到任何相关插件。此功能的作用:如果我有一段代码并在其前键入“{”,然后在其后键入“}”,它会自动将其跳格以匹配使代码更易于阅读的跳格规则。例如:从一些代码开始:{inti=1;intj=2;j+=i;}在某处添加一个开始括号:{inti=1;intj=2;{j+=i;}添加一个结束括号,包含的代码会自动为我添加标签:{

c++ - "-D__STDC_FORMAT_MACROS"gnu 编译器选项

我正在清理我的Makefile并试图了解那里实际发生了什么。我遇到了上述选项。它必须启用一些宏来保证与旧C库的兼容性,但我找不到它的用途。gnu编译器(g++)选项是什么g++-D__STDC_FORMAT_MACROS意思还是做?g++甚至有必要吗?PS:我在Linux下工作 最佳答案 感谢Nick的链接,我得出结论,g++不需要它。它与C的inttype.h和printf有关。来自链接Inparticular,thesymbol__STDC_FORMAT_MACROS,mentionedinfootnote182oftheCst

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">]当然可

c++ - 无法理解这是循环依赖还是 Clang

我在Clang/OSXYosemite上,我的项目很好地使用了Eigen。然后我引入了一个也使用Eigen的外部库,现在我有这个编译错误:/usr/local/include/Eigen3/Eigen/src/Geometry/Quaternion.h:516:13:Implicitinstantiationofundefinedtemplate'Eigen::internal::quaternionbase_assign_impl,3,1>'这似乎来自库中的声明:#include这是我使用四元数的代码:Eigen::Quaternionq,q_wv,q_ic,q_cv;q_cv=_p

c++ - 通过 clang-format 格式化 lambda 背后的逻辑是什么?

我在Emacs(24.5.2版)中使用clang-format(3.5版)。下面是一段由clang-format以LLVM风格格式化的简单代码:intmain(){std::cout";std::stringword;while(std::cin>>word){std::cout";}return0;}请注意它是如何对齐lambda的正文和右括号的。这种格式是否有任何逻辑,或者它只是缺乏对lambda的支持?我需要设置clang-format的配置参数以获得更好的格式吗? 最佳答案 std::accumulate(word.cbeg

c++ - __attribute__ ((weak)) 的处理在 clang 和 gcc 中是不同的

我有一个应用程序(app)和一个动态库/共享对象(dlib),它们都链接到一个静态库,该静态库使用__declspec(selectany)在头文件中声明了一个全局变量(gvar)|/__attribute__((weak)).通过设计,app和dlib都应该有自己的gvar拷贝(在MSVC和GCC上我完全明白这一点)。移植到MacOSX并用clang编译后,我看到dlib中的gvar链接到应用程序中的gvar。不确定这是一个clang错误还是设计使然;如果是设计使然,是否有任何方法可以避免它并获得与GCC/MSVC中相同的行为?clang版本:bash-3.2$c++--versio

c++ - Clang 不能与 std::experimental::optional 一起正常工作

clang似乎不能与std::experimental::optional一起正常工作。考虑以下示例:#include#includestructFoo{intbar;};intmain(){Foofoo;std::experimental::optionalopt=foo;opt.value().bar=42;std::cout它在g++5.3.1版中编译良好,但在clang7.0.0版和clang7.0.2版中均无法编译。返回的错误是:Undefinedsymbolsforarchitecturex86_64:"std::experimental::bad_optional_acc