草庐IT

clang-omp

全部标签

c++ - 此代码有效吗?与 gcc 一起使用,不要与 clang 一起使用

这个问题在这里已经有了答案:Strangeerrorwithatemplatedoperatoroverload(3个回答)关闭8年前。以下最小代码可以在g++上编译,但不会在clang++上编译:templateToperator*(floata,constT&b){returnb*a;}structA{Aoperator*(floatb)const{Aa;returna;}};intmain(){Aa;2.0f*a;}这是我得到的错误:$clang++test.cpptest.cpp:2:3:error:overloaded'operator*'musthaveatleastone

c++ - Clang 与 GCC : Friend-ing a global function via qualified/unqualified names

我正在尝试确定是否针对Clang、GCC或两者提交错误报告(我已经针对Clang主干和GCC4.7.2进行了测试:如果有人可以针对GCC主干验证这一点会有所帮助):基本上,在默认和C++11模式下,使用-fsyntax-only可以很好地编译以下代码三行文件:classA{friendvoidf();};请注意,没有事先声明f(),但这显然没问题。但是,Clang(但不是GCC)拒绝以下内容:classA{friendvoid::f();};来自Clang的错误是“在指定范围内找不到类型为'void()'的名为'f'的函数”,但我在标准中找不到任何理由来区别对待这种情况,所以我认为这是

c++ - pygccxml 中是否有 Python Clang 包装器来包装 GCC-XML?

很长一段时间以来,我一直在使用pygccxml来解析和内省(introspection)我的C++源代码:它可以帮助我在构建过程中进行一些巧妙的代码生成。最近我阅读了很多关于LLVM堆栈的好处,尤其是LLVMClang解析器为C++编译带来的好处。我现在想知道Clang是否有任何Python接口(interface),以便我可以将它用作我现有的一些代码生成任务的基础? 最佳答案 进一步挖掘后,我发现在LLVM2.7release可能会有一些有用的开始:IntheLLVM2.7time-frame,theClangteamhasmad

c++ - 使用 clang++、-fvisibility=hidden、typeinfo 和 type-erasure

这是我在MacOSX上使用clang++时遇到的问题的缩小版本。经过认真编辑,以更好地反射(reflect)真正的问题(描述问题的第一次尝试没有表现出问题)。失败我有一个C++软件,在目标文件中有大量符号,所以我使用-fvisibility=hidden保持我的符号表很小。众所周知,在这种情况下,必须特别注意vtables,我想我面临这个问题。但是,我不知道如何以一种让gcc和clang都满意的方式优雅地解决它。考虑base具有向下转换运算符的类,as,和derived类模板,其中包含一些有效负载。对base/derived用于实现类型删除://foo.hh#defineAPI__at

c++ - clang/clang++ 在 Windows 中找不到 C/C++ 头文件?

1小时前我从http://llvm.org/pre-releases/3.6.0/下载了llvm-3.6.0-rc4-win32.exe.我尝试编译只打印“hello”的简单C代码,但没有编译,因为clang.exe找不到stdio.h。当我使用具有相同代码的clang-cl.exe时,它​​起作用了。即使使用iostream,我也对clang++有同样的问题,我将-I标志添加到GCC(4.9.1)C++headers,结果:C:\Users\One\Desktop>clang++-Ic:\MinGW\x86_64-w64-mingw32\include\c++main.cpp-lib

c++ - 如果没有 `clang-check` 选项, `-analyze` 会做什么?

clang-check,Clang的内置静态分析工具,有一个-analyze选项,帮助字符串只是说“运行静态分析引擎”。使用这个标志,我看到在我的几个文件上运行clang-check的输出很少;没有它,我会看到很多警告。运行静态分析工具clang-check的主要目的不就是运行静态分析引擎吗?为什么我在运行引擎时会看到less输出,并且该工具在没有标志的情况下会做什么? 最佳答案 运行clang-check没有任何选项运行-fsyntax-only模式(检查正确的语法)。只有指定-analyze,才会执行静态分析工具,见http:/

c++ - clang-format:类声明结束和命名空间关闭之间的空行

我使用clang-format来格式化我们的C++代码。我想在类声明和周围命名空间的右大括号之间有一个空行,如下所示:namespaceFoo{classBar{};}但是clang-format将我的代码更改为:namespaceFoo{classBar{};}它删除了类声明和命名空间的右大括号之间的空行。我的问题:有没有办法防止clang-format删除空行?这是我当前的clang格式配置:Language:CppAccessModifierOffset:-4AlignAfterOpenBracket:trueAlignConsecutiveAssignments:falseAl

c++ - gcc 错误?它莫名其妙地将数组衰减为指针,而clang没有

这是一个说明问题的简化版本:structFoo{Foo()=default;templateFoo(constchar(&)[N]){}};templateautofoo(constchar(&arr)[N])->Foo{returnarr;}automain()->int{foo("StackOverflow");}g++似乎将arr衰减为constchar*,尽管数组引用参数被传递给数组引用参数。它给出了这个错误:IninstantiationofFoofoo(constchar(&)[N])[withlongunsignedintN=4ul]:error:couldnotconv

c++ - 运算符转换、GCC 和 clang : which compiler is right?

考虑以下代码:structS{usingT=int;operatorT(){return42;}};intmain(){Ss;S::Tt=s;//Isthefollowinglinecorrect?t=s.operatorT();}使用GCC(4.9/5.1/6.1)编译,但使用clang(3.8/3.7)编译失败。返回的错误是:error:unknowntypename'T';didyoumean'S::T'?在这种情况下哪个编译器是正确的,为什么?注意解决它是一个合格的问题T:t=s.operatorS::T();问题不在于如何让它发挥作用。 最佳答案

c++ - 值初始化 : MSVC vs clang

#includetemplatestructA{Tm_a[N];A():m_a{}{}};structS{explicitS(inti=4){}};intmain(){Aan;}上面的代码在MSVC(2017)中编译得很好,但在clang3.8.0中编译失败(clang++--version&&clang++-std=c++14-Wall-pedanticmain.cpp):clangversion3.8.0(tags/RELEASE_380/final263969)Target:x86_64-unknown-linux-gnuThreadmodel:posixInstalledDir