草庐IT

clang-omp

全部标签

c++ - 使用 Clang 编译时的最大错误数

当我尝试将'-fmax-errors=n'选项与clang++一起使用时,会输出以下警告:clang:warning:argumentunusedduringcompilation:'-fmax-errors=2'clang的等价物是什么? 最佳答案 等效的clang标志是-ferror-limit:clang-ferror-limit=2test.c 关于c++-使用Clang编译时的最大错误数,我们在StackOverflow上找到一个类似的问题: htt

带有继承的 C++11 代码不能用 clang 编译

我有一个代码如此简单的小程序:namespaceoverride{usingfinal=void();}namespacefinal{usingoverride=void(int);structfinal{virtualoverrideoverride;virtual::override::finaloverride;};}intmain(){structfinalfinal:::final::final{::final::overrideoverrideoverridefinal;::override::finaloverridefinaloverride;};//doesn'tco

c++ - 包括带有 Clang/LLVM 的 C++ 11 头文件

我已经从源代码安装了clang和llvm,并且正在尝试使用新标准的特性编译一些C++代码。我发现,例如使用forranges例如for(i:vector)工作正常,当我需要导入标题时遇到问题(找不到头文件),例如或.我是否需要使用新的libc++才能使用这些header,或者我是否需要进行简单的构建更改?目前,我刚刚将clang和llvm构建到我的主目录中的一个文件夹中,并从那里调用clang++。 最佳答案 参见http://clang.llvm.org/get_started.html.IfyouintendtoworkonCl

c++ - 使用 clang 的 constexpr 深度限制(constexpr-depth 似乎不起作用)

有没有办法配置constexpr实例化深度?我正在运行-fconstexpr-depth=4096(使用clang/XCode)。但仍然无法编译此代码并报错:Constexpr变量fib_1必须由常量表达式初始化。无论是否设置选项-fconstexpr-depth=4096,代码都会失败。这是clang的错误还是预期的行为方式。注意:这在fib_cxpr(26)之前一直有效,27是它开始失败的时候。代码:constexprintfib_cxpr(intidx){returnidx==0?0:idx==1?1:fib_cxpr(idx-1)+fib_cxpr(idx-2);}intmai

c++ - 如何检测 Clang 中的 libstdc++ 版本?

我想用Clang编写一个“可移植”的C++库。“可移植”意味着我检测(在C预处理器中)编译环境中有哪些C++功能可用,并使用这些功能或提供我的解决方法。这类似于Boost库正在做的事情。但是,某些功能的存在不取决于语言,而是取决于标准库的实现。我特别感兴趣的是:类型特征(哪些是可用的,拼写是什么)如果initializer_list是constexpr。我发现这有问题,因为默认情况下Clang不使用其自己的标准库实现:它使用libstdc++。虽然Clang预定义了预处理器宏__GNUC__、__GNUC_MINOR__、__GNUC_PATCHLEVEL__,但它们分别被硬编码为值4

c++ - 为什么 std::seed_seq 根据 C++11 是不可复制的,为什么 gcc/clang 不符合?

考虑以下最小示例://main.cpp#includeintmain(int,char**){std::seed_seqseed1{1337,42};std::seed_seqseed2(seed1);std::seed_seqseed3=seed2;return0;}根据C++标准,这不应该编译,因为std::seed_seq既不是copyconstructible,也不copyassignable.然而,这对g++4.9都编译得很好,和clang3.4g++-4.9-std=c++11-Wallmain.cppclang++-std=c++11-Wallmain.cppandroi

c++ - 如何在 Mac 上找到实际的 Clang 版本?

注意:GetAppleclangversionandcorrespondingupstreamLLVMversion中没有提供任何答案似乎不再有效了。下载页面在http://releases.llvm.org/download.html和维基百科文章https://en.wikipedia.org/wiki/Clang似乎表明最新的Clang版本是6.0.0。但是在我的macOSHighSierra版本10.13.3上,我看到了这个输出:$clang--versionAppleLLVMversion9.1.0(clang-902.0.39.1)Target:x86_64-apple-d

c++ - Variadic 模板代码可在 GCC 4.6 上编译,但不能在 clang 或 GCC 4.7 上编译

我有这段代码(从更复杂的版本简化而来):templateclassTest{public:templatevoidprint(void(*function)(A2...,A1...)){}};voidtest_print(inta,floatb,doublec){}intmain(){Testtest;test.print(&test_print);}如果我在GCC4.6.3上使用g++-std=c++0xfilename.cpp编译它,它编译正常但是在clang3.0上使用clang++-std=c++0xfilename.cpp它抛出以下错误:filename.cpp:14:10:

c++ - Clang 中带有静态 constexpr 的奇怪的循环模板模式 (CRTP)

考虑我下面的简单示例:#includetemplateclassBase{public:staticconstexprinty=T::x;};classDerived:publicBase{public:staticconstexprintx=5;};intmain(){std::cout在g++中,这可以正常编译并按预期打印5。然而,在Clang中,它无法编译并出现错误nomembernamed'x'in'Derived'。据我所知这是正确的代码。我正在做的事情有问题吗?如果没有,是否有办法在Clang中完成这项工作? 最佳答案

c++ - 使用 clang 的 ThreadSanitizer 和 TBB 避免误报

有没有人试过clang'sThreadSanitizer与IntelThreadingBuildingBlocks(TBB)?到目前为止,我的经验是您会收到很多警告,即使对于相对简单的示例也是如此。不幸的是,其中许多似乎是误报。在thisanswer对于另一个ThreadSanitizer问题,建议使用抑制文件。这有帮助吗?是否有针对TBB或任何其他技术的抑制文件?(旁注:使用Helgrind,它看起来很相似。许多误报。) 最佳答案 当我在TSAN_OPTIONS中引用抑制文件时,我才让它工作。至少对我而言,仅在编译期间使用-fsa