草庐IT

clang_analyzer

全部标签

c++ - clang 的 uint24_t 是如何工作的?我可以在 clang/LLVM 之外使用它吗?

作为GCC用户,我刚刚注意到clang支持uint24_t类型(它在他们的stdint.h中)。这是如何运作的?我的意思是,它是纯粹在内部支持,作为一种语言扩展,还是像C++类那样实现,具有超过3个字节或16位值和另一个8位值的抽象?并且-怎么可能通过GCC来“猛拉”这样的实现并自己使用它?注意:我希望在现代C++中有一个类似uint24_t的类(或更一般的uint_t);我的替代方案是自己动手。你可以s/uint/int/g;如果你喜欢这个问题。 最佳答案 这不是可移植的或标准的。它仅适用于AVR(具有24位地址)和GCChasi

c++ - 有没有办法在 g++/clang++ 中使用自定义修改?

当使用C++模板,尤其是元组时,我经常会得到很长的错位名称,例如_ZN11__sanitizer13InternalAllocEmPNS_28SizeClassAllocatorLocalCacheINS_20SizeClassAllocator32ILm0ELy140737488355328ELm0ENS_12SizeClassMapILm3ELm4ELm8ELm17ELm64ELm14EEELm20ENS_15TwoLevelByteMapILy32768ELy4096ENS_20NoOpMapUnmapCallbackEEES5_EEEEm这在标称情况下显然很好,并且易于调试,但

c++ - 算法分析 : Am I analyzing these algorithms correctly? 如何解决这些问题

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。1)x=25;for(inti=0;i我认为这个是O(n)。2)for(intr=0;r我认为这个是O(1),因为对于任何输入n,它将运行10000*10000次。不确定这是否正确。3)a=0for(inti=0;i我认为这个是O(i*k)。我真的不知道如何解决这样的问题,其中内部循环受到外部循环中递增变量的影响。这里的一些关键见解将不胜感激。外循环运行

c++ - 是否可以从 clang 的解析树中提取预处理器信息?

考虑以下简单的头文件demo.h:#definePERSISTstructSerialised{intsomeTransientValue;PERSISTintaNumberToPersist;};我使用以下代码和Clang的pythonAPI来迭代header:importsys,clang.cindexdefcallexpr_visitor(node,parent,userdata):ifnode.location.file:printnode.location.file,node.displayname,node.kindreturn2tu=clang.cindex.Index.

c++ - 强制 clang 为类模板实例化的从未引用的静态成员函数发出代码

我可以使用used和noinline在gcc中轻松实现此目的functionattributes(见下面的代码),但这在clang中不起作用,即使它应该支持这两个函数属性。一个简化的例子:templatestructFactory{static__attribute__((used,noinline))TcreateFoo(){returnT();}};intmain(){Factoryf;//instantiateanduseFactory}编译gcc中的代码并使用nm确认gcc正确发出函数:nm--demangletest|grepcreateFoo0000000000403185

c++ - 如何在预处理时可靠地检测 clang 的版本?

显然,与Xcode捆绑在一起的clang不遵守上游__clang_major__和__clang_minor__值,而是报告某种面向用户的Xcode版本。这里是clang的各种MacPorts安装的值,以供引用。他们似乎尊重上游版本标识符。我在Linux上测试时得到了类似的值。➜prohibit-clang-3.2/opt/local/bin/clang++-mp-3.2-dM-E-xc/dev/null|grep__clang_m#define__clang_major__3#define__clang_minor__2➜prohibit-clang-3.2/opt/local/bi

c++ - 是什么导致 clang 找不到 unordered_map header ?

我正在尝试使用Clang++编译我在网上找到的程序。Makefile生成此命令:clang++-c-archx86_64-msse3-std=c++11-stdlib=libstdc++-Wno-missing-field-initializers-Wno-missing-prototypes-Wreturn-type-Wno-non-virtual-dtor-Wno-exit-time-destructors-Wformat-Wmissing-braces-Wparentheses-Wno-switch-Wunused-function-Wunused-label-Wno-unuse

c++ - 神秘的链接器错误 "undefined reference to ` __gxx_personality_v 0'"在 cygwin 中使用 clang

我做了一些搜索,所有答案似乎都建议使用clang++而不是clang(或者更确切地说是g++代替gcc),这就是我最初所做的。尽管如此,问题仍然存在,无论是clang++-Wall-std=c++11-otest.exetest.cppA.cppB.cppetc.cpp或clang++-lstdc++-Wall-std=c++11-otest.exetest.cppA.cppB.cppetc.cpp编译和链接在Cygwin中使用g++工作正常。g++-Wall-std=c++11-otest.exetest.cppA.cppB.cppetc.cpp更新:这是链接期间的信息。clang是

c++ - 按值捕获异常 - gcc 和 clang 不同意

考虑这个简短的片段:structB{B()=default;explicitB(Bconst&){}};structD:B{};intmain(){try{throwD{};}catch(B){}}gcc接受这段代码,clang认为它格式错误:main.cpp:17:13:error:nomatchingconstructorforinitializationof'B'catch(B){^谁是对的? 最佳答案 我认为这是一个gcc错误(由于还没有人否决这个答案,我将其提交为70375)。两个编译器都正确地同意应该捕获D{},根据[e

c++ - Clang 无法在模板类特化中编译模板函数,该函数具有来自模板声明的*不同的返回类型*

以下函数derefItemX()在GCC4.8-5.3上编译正常,但在CLang3.8上编译失败://!AccessoryOperations-templateargumentdependedwrapperstemplate//ForNodes/non-scopedstoragestructOperations{//!\briefDefererencewrappedordirectiterator//!//!\paramielIItemXT&-iteratortobedereferenced//!\returnItemT&-resultingreferencetemplateconst