CLANG_ENABLE_MODULE_DEBUGGING
全部标签 我有4个测试用例,我相信它们都是有效的:constexprintf(intconst&/*unused*/){return1;}voidg(intconst&p){constexprinta=f(p);//clangerror,gccvalidintv=0;constexprintb=f(v);//clangvalid,gccvalidintconst&r=v;constexprintc=f(r);//clangerror,gccerrorintn=p;constexprintd=f(n);//clangvalid,gccvalid}intmain(){intp=0;g(p);}Cla
我最近通过观察clang如何处理复杂情况来学习LLVM。我写了(顶层,不在函数中):intqaq=666;inttat=233;autohh=qaq+tat;然后我使用命令:clang-4.0003.cpp-emit-llvm-S-std=c++11clang生成如下代码:@qaq=globali32666,align4@tat=globali32233,align4@hh=globali320,align4@llvm.global_ctors=appendingglobal[1x{i32,void()*,i8*}][{i32,void()*,i8*}{i3265535,void()*
我正在开发一个使用std::any的应用程序.最近我发现,当我用clang编译它时,我得到了bad_any_caststd::any_cast之一的异常我确定我正在转换为正确的类型。我添加了一些typeid(T).name()的转储至cout确保插入std::any的类型没有区别并输入我正在尝试转换到的内容。我试图编写简单的程序来演示它,但我无法重现它。值得一提的是:我正在传递一包std::any(每个内部包含不同的类型)并且只有一个有问题(它是std::map)。当我切换到boost::any时问题消失了(或者如果我使用gcc构建我的应用程序)。我已经深入了解std::any_cas
假设我想即时编译一个C++字符串:llvm::LLVMContextcontext;std::unique_ptraction=std::make_unique(&context);clang::tooling::runToolOnCode/*WithArgs*/(action.get(),"intfoo(intx){return++x;}");std::unique_ptrmodule=action->takeModule();不幸的是,当LLVM尝试转换IR时,似乎有一个异常表明Triple未设置(https://clang.llvm.org/docs/CrossCompilati
与thisquestion稍微相关但不一样。在ArchLinux上使用clang7.0.1。我喜欢干净的代码,所以我想启用所有警告并将它们视为错误。问题是我的构建中有一些自动生成的文件不是没有警告,例如:生成/foo.hinlinevoidfoo(intunused){//warning:unusedparameter'unused'}生成/foo.cc#include"foo.h"//Thereisactualcodehere,butitdoesn'tmatter.由于这些文件是由第三方工具生成的,我不能轻易修改它们,所以我使用-isystem禁止来自generated的所有警告目录
我正在尝试将函数指针静态转换为特定函数重载,但似乎clang仍会解析(未使用的)模板特化的noexcept语句,从而生成编译器错误。如果未使用相应的函数重载,GCC似乎并不关心noexcept。templatevoidfun(T)noexcept(T(1)){}voidfun(int){}voidfun(int*){}intmain(){inta;fun(&a);//callingworksfinefun(a);static_cast(&fun);//staticcastingdoesn't}https://godbolt.org/z/ixpl3f这里是哪个编译器出错了?当将函数指针转
由于以下问题,我们构建的travisci已损坏:Thefollowingpackageshaveunmetdependencies:clang-6.0:Depends:libjsoncpp0(>=0.6.0~rc2)butitisnotinstallableE:Unabletocorrectproblems,youhaveheldbrokenpackages.apt-get.diagnosticsapt-getinstallfailedsudoaptinstalllibjsoncpp0不起作用,因为libjsoncpp0不存在;我也试过sudoaptinstalllibjsoncpp-
我在声明一个使用boost::enable_if的函数时遇到了一些麻烦:下面的一段代码给我一个编译器错误://Declarationtemplatevoidfoo(Tt);//Definitiontemplatetypenameboost::enable_if>::typefoo(Tt){}intmain(){foo(12);return0;}编译时,出现“对foo的模糊调用”错误。根据enable_if的定义,'type'typedef在条件为真时对应于void,据我所知,的两个签名foo匹配。为什么编译器认为它们不同,是否有正确的方法来转发声明foo(最好不要重复enable_if
官网文档参考:文档中心位于entry->src->main-module.json5一、基础属性{"module":{/*标识当前Module的名称,标签值采用字符串表示(最大长度31个字节),该名称在整个应用中要唯一,仅支持英文字符。不可缺省*/"name":"entry",/*标识当前Module的类型。类型有两种,分别:-entry:应用的主模块。-feature:应用的动态特性模块。不可缺省*/"type":"entry",/*标识当前Module所对应的代码路径,标签值为字符串(最长127字节)。该标签值可缺省,缺省值为空*/"srcEntry":"",/*标识当前Module的描述
当使用ClangComplete自动完成时,我想让它也显示函数签名。例如,如果我声明以下函数:intadd(inta,intb){intresult=a+b;returnresult;}当我启动ClangComplete时,我不仅希望函数名称在自动完成结果中弹出,而且它的参数也是如此:add(inta,intb). 最佳答案 试试这个setconceallevel=2setconcealcursor=vinletg:clang_snippets=1letg:clang_conceal_snippets=1"Thesingleonet