草庐IT

CLANG_ARGS

全部标签

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

c++ - 我应该如何在clang中使用 sanitizer ?

很抱歉,如果这是一个super简单的概念,但我发现很难获得正确的心态才能正确使用clang提供的sanitizer。floatfoo(floatf){return(f/0);}我用编译了这个小片段clang++-fsanitize=float-divide-by-zero-std=c++11-stdlib=libc++-csource.cpp-oosan我还编译了我的对象的“正常”版本而不使用sanitizerclang++-std=c++11-stdlib=libc++-csource.cpp-oonorm我期待一些详细的输出,或者来自控制台的一些错误,但是当使用nm检查文件时,我只

c++ - 为什么在使用快速数学时 GCC 或 Clang 不优化 1 条指令的倒数

有谁知道为什么GCC/Clang不会在下面的代码示例中优化函数test1以在使用快速数学选项时仅使用RCPPS指令?是否有另一个编译器标志会生成此代码?typedeffloatfloat4__attribute__((vector_size(16)));float4test1(float4v){return1.0f/v;}您可以在此处查看编译后的输出:https://goo.gl/jXsqat 最佳答案 因为RCPPS的精度比float除法要低一个很多。启用该优化的选项不适合作为-ffast-math的一部分。x86targetop

c++ - 带有 "noexcept"构造函数的程序被 gcc 接受,被 clang 拒绝

代码:structT{T(){}};structS{Tt;S()noexcept=default;};intmain(){//Ss;}g++4.9.2接受这一点,没有错误或警告,但是clang3.6和3.7报告第7行:error:exceptionspecificationofexplicitlydefaulteddefaultconstructordoesnotmatchthecalculatedone但是,如果Ss;行没有被注释掉,g++4.9.2现在会报告:noex.cc:Infunction'intmain()':noex.cc:12:7:error:useofdeletedf