草庐IT

clang_analyzer

全部标签

c++ - 编译时抽象类处理中的 clang vs gcc

其中之一issuesnlohmann/json开源库引起了我的注意。我有一个案例的最小复制品doesnotcompile在少数版本的桌面gcc(4.8、4.9,也尝试过5+)下,但使用macclang和Androidndk的gcc4.9编译得很好#includestructbase{virtualvoidfoo()=0;};intmain(){(void)numeric_limits::is_signed;}GCC正在尝试实例化std::numeric_limits使用基类而不是派生类:/usr/include/c++/4.8/limits:Ininstantiationof'stru

c++ - 如何防止 clang-format 在新行中添加单个分号?

我在C++中有这行代码while(fread(pixel_array++,sizeof(byte),3,fp));但是当我使用clang-format时,它会拆分分号并将其添加到新行中while(fread(pixel_array++,sizeof(byte),3,fp));我不喜欢这种风格,我更喜欢保持原来的风格。我应该如何修改我的clang-format配置?谢谢。 最佳答案 clang-format5.0目前无法识别这种类型的循环。不幸的是,从clang-format版本5开始,您将无法获得满足您需要的设置。查找ClangFo

c++ - ADL 在 constexpr 函数中不起作用(仅限 clang)

以下代码可以使用MSVC和gcc编译,但不能使用clang。为什么会这样?如果CallFoo()是constexpr,ADL似乎无法工作。查看评论。templateconstexprvoidCallFoo()//Removeconstexprtofixclangcompilationerror.{Foo(T());}classApple{};intmain(){CallFoo();}constexprvoidFoo(Apple){}Clang错误消息(seeongodbolt.org)::4:5:error:useofundeclaredidentifier'Foo'Foo(T());

c++ - Clang 是否比跨平台的 GCC 更具确定性?

我正在考虑用C++编写多用户RTS游戏(部分)的可行性。我很快发现,一个硬性要求是游戏模拟必须完全确定服务器和所有客户端的最后一点,以便能够将网络通信限制为用户输入,而不是游戏状态本身.由于每个人都有不同的计算机,这似乎是一个难题。那么,是否有一些“神奇”的方法可以让C++编译器创建一个在Linux(服务器)、Windows和Mac上完全确定的可执行文件?我认为两个主要的OSSC++编译器是GCC和Clang,所以我想知道在这方面是否一个比另一个表现更好。我也会对任何可用于验证C++确定性的测试套件感兴趣。[编辑]所谓确定性,我的意思是编译后的程序,给定相同的初始状态,并以相同的顺序输

c++ - 为什么 clang 让我在 C++03 模式下通过非常量引用获取临时值?

Inspiredbymyobservationinapreviousquestion,我决定做一个小测试:#include#includeintmain(){charc='A';std::stringstreamss("B");//Iknowthisisbadmojo;that'swhyI'mtestingitss>>char(c);std::cout我的编译器版本:AppleLLVMversion5.1(clang-503.0.40)(basedonLLVM3.4svn)Target:x86_64-apple-darwin13.3.0Threadmodel:posix用C++03模式

c++ - gcc 中的错误,或 clang/MSVC 中的扩展

以下代码片段可以在clang和MSVS中编译,但不能在gcc中编译。templateclassclone_ptr;templateclone_ptrmake_cloned(Args...args);//note:everythingnotneededforexamplecutout,so//thisclassisneithercompletenorcorrecttemplateclassclone_ptr{public:clone_ptr():ptr(nullptr){}operatorbool(){returnptr!=nullptr;}T*operator->(){returnpt

c++ - 如何在qt creator中使用clang静态分析器

参见本手册UsingClangStaticAnalyzer在QtCreator手册中有人可以告诉我如何设置吗?我在QtCreator的分析器设置中没有看到这个选项卡,也没有在列表中看到可用于此的插件...更新:抱歉,我看到这只是一个商业版本 最佳答案 QtCreator用户好消息:clang静态分析器将从3.7版本开始包含在QtC社区版中 关于c++-如何在qtcreator中使用clang静态分析器,我们在StackOverflow上找到一个类似的问题: h

c++ - 在常数值上强制 Clang 为 "perform math early"

这与Howtoforceconstpropagationthroughaninlinefunction?有关Clang有一个集成的汇编程序;而且它不使用系统的汇编程序(通常是GNUAS(GAS))。非Clang早期执行了数学运算,一切都“正常工作”。我说“早”是因为@n.m。反对将其描述为“预处理器执行的数学运算”。但是这个想法是这个值在编译时是已知的,应该尽早评估它,就像预处理器评估#if(X%32==0)时一样。.下面,Clang3.6提示违反了约束。似乎常量没有在整个过程中传播:$exportCXX=/usr/local/bin/clang++$$CXX--versionclan

c++ - 如何使用 Clang 获取 C/C++ 程序的所有全局声明列表?

我正在尝试编写一个程序,使用Clang列出C或C++程序的所有公开导出的变量和函数。我关注了thistutorial的第5部分,但它不适用于当前版本的clang。在那之上,我得到了somehintsCompilerInstance可以使代码更短,但我不确定如何使用它。您将如何实现此功能?你能给我任何指向正确方向的指示吗?例如:是否有全局声明变量的大型哈希表,或者我是否必须遍历AST? 最佳答案 公开导出-您是指带有外部链接的符号吗?您可以使用nm在目标文件、共享库和可执行文件上,使用--extern-only--defined-on

c++ - 使用 clang AST 解析器忽略丢失的 header

我在Windows上,使用MSVC来编译我的项目,但我需要clang来使用它简洁的AST解析器,它允许我编写一个小代码生成器。问题是,clang无法解析MSVCheader(一个众所周知且可以理解的问题)。我尝试了两种选择:我包含MSVCheader文件夹,解析我的代码中包含的内置header最终会在某些时候导致fatalerror,阻止我正确解析我想要的部分。我之前所做的只是不提供任何内置header并转发声明我需要的类型。它工作正常,不知何故它不再适用于最新的Clang。我真的不知道关于丢失header的解析器策略是否发生了变化,但它每次都会导致完全失败,如包含在内,并没有太多被解