草庐IT

llvm-clang

全部标签

c++ - 如何允许 clang-format 在一行中格式化空类/结构?

具有以下结构定义:structcity{};structcountry{};我想要clang-format像这样为我格式化structcity{};structcountry{};我怎样才能做到这一点?我可以看到很多选项,例如AllowShortBlocksOnASingleLine、AllowShortFunctionsOnASingleLine或AllowShortIfStatementsOnASingleLine但没有AllowShortClassDefinitionsOnASingleLine(或类似的). 最佳答案 很遗憾

c++ - 仅当当前行溢出 clang 格式时才在新行上加括号

我最近决定在我的C++项目中包含一个.clang-format文件,以使代码更加统一和易于阅读。我最喜欢Google的默认值,除了我想使用4个空格缩进而不是两个。这样做的问题是,当当前行超出80个字符的列限制时,它会使某些语句更难阅读。例如,在溢出的if语句中:if(some_condition||some_other_condition||yet_another_condition){//blockstartshere}yet_another_condition的对齐方式与ifblock的开头相匹配,这使得在没有某种中断的情况下难以阅读。理想情况下,我希望在这种情况下发生的事情是这样

c++ - Clang 发出有关不受支持的 __declspec 属性的警告

我一直在尝试将第三方库链接到我的程序。工具链使用Clang4.0.0进行编译(emscripten1.37.19在工具链中使用了clang)。我收到了一个关于__declspec的错误,在查找之后,我意识到我需要将-fdeclspec参数添加到clang。但是,现在我收到此警告:warning:__declspecattribute'dllimport'isnotsupported[-Wignored-attributes]Clang4.0文档说这个属性应该被AFAIK支持。我在这里错过了什么吗? 最佳答案 -fdeclspec如果

c++ - gcc/clang 在基本结构的后填充中布置派生结构的字段

这个问题在这里已经有了答案:Standard-layoutandtailpadding(5个答案)关闭4年前。当涉及填充和继承时,我对gcc和clang如何布局结构感到困惑。这是一个示例程序:#include#includestructA{void*m_a;};structB:A{void*m_b1;charm_b2;};structB2{void*m_a;void*m_b1;charm_b2;};structC:B{shortm_c;};structC2:B2{shortm_c;};intmain(){Cc;memset(&c,0,sizeof(C));memset((B*)&c,-

c++ - 如何在没有 clang-tidy 警告的情况下使用 union ?

Clang-tidy的cppcoreguidelines-pro-type-union-access规则本质上是对union的完全禁止,它标记了union成员的所有访问权限。我的库有一个外部“C”接口(interface),其结构包含union。我不能在头文件中使用变体,这些变体应该可以从C而不仅仅是C++使用。显然,在我使用union的任何地方用NOLINT乱码代码并不是一个好主意。除了禁用此检查之外,还有其他解决方法吗? 最佳答案 这取决于您对union的使用,特别是取决于您的问题中提到的union使用在您的代码中的分散程度。如

c++ - 使用 clang 从 stdin 自动完成

我已经在Emacs中设置了自动完成环境,使用clang2.8作为解析器。它运行良好,但依赖于在完成之前将当前编辑的缓冲区保存到文件中。这很慢,所以我试图让clang解析通过stdin提供给它的文件,但到目前为止运气不好。我在解析文件时输入clang的命令行如下:clang-cc1-fsyntax-only-Iinclude/-code-completion-atfoo.cpp:10:20foo.cpp这很好用。但是尝试从stdin读取失败。我试过这个:catfoo.cpp|clang-xc++-cc1-fsyntax-only-Iinclude/-code-completion-at-

c++ - Clang 前端 API 的所有权问题

我正在使用ClangC++API。由于API没有正确使用智能指针,我一直在努力解决所有权问题。到目前为止,我自己解决了所有发现的问题,但这个问题让我很烦恼。当代码执行时,我遇到了访问冲突。我相当确定这是一个双重删除,但由于文档不存在,我不知道去哪里看。幸运的是,复制程序相当短。有什么建议吗?#define_SCL_SECURE_NO_WARNINGS#pragmawarning(push,0)#include#include#include#include#include#include#include#include#include#include#include#include#i

c++ - 我如何针对在 xcode/clang/macos 中使用 libc++ 编译的静态库编译应用程序?

当我尝试编译一个测试控制台应用程序以测试同一工作区中静态库的某些功能时,我在二进制文件的链接阶段遇到了问题,只有当我选择使用libc++标准库时才会发生。缺少符号错误如下:Undefinedsymbolsforarchitecturex86_64:"std::__1::basic_string,std::__1::allocator>::empty()const",referencedfrom:libtorrent::torrent::replace_trackers(std::__1::vector>const&)inlibLibOFFTorrent-xcode.a(torrent.

c++ - clang 不编译我的代码,但 g++ 可以

谁能帮我处理这段代码:#include#includestructnonsense{};templatetypenamestd::enable_if::value,int>::typefo(void*const){return0;}templatetypenamestd::enable_if::value,int>::typefo(void*const){return1;}typedefint(*func_type)(void*);templatevoidrun_me(){staticstructnonsensedata;typedefstd::pairpair_type;std::v

c++ - Clang 自动变量模板错误

我去看看你是否可以在变量模板声明中使用auto。templateautoF=T{};很好,但是一旦您尝试使用它,就会发出咔哒声。intf=F;//error:cannotinitializeavariableoftype'int'withanlvalueoftype'auto'autof=F;//Stacktracedecltype(F)f=F;//StackFacestd::cout)>::value;//falsestd::cout)).name();//Stacktracestd::cout),decltype(F)>::value;//truedecltype(auto)、au