草庐IT

clang-omp

全部标签

c++ - ld : symbols not found for architecture x86_64, clang: 链接器命令失败

我正在尝试使用Homebrew软件下载和构建诸如boost、ceres-solver之类的软件包。发生的事情是我将尝试编译代码,没有任何特殊标志(g++foo.cpp-ofoo-I/usr/local/...并且我也尝试过clang++)并且我始终收到此错误:Undefinedsymbolsforarchitecturex86_64:...ld:symbol(s)notfoundforarchitecturex86_64clang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)所以我环顾四周,解决方案是使用-st

c++ - 匿名临时对象和类模板参数推导 - gcc vs clang

考虑以下代码片段:templatestructfoo{foo(T){}};intmain(){foo{0};}g++7愉快地创建了一个foo类型的临时对象,推导出T=int。clang++5和6拒绝编译代码:error:expectedunqualified-idfoo{0};^liveexampleonwandbox这是一个clang错误,还是标准中有什么东西阻止类模板参数推导为未命名的临时对象启动? 最佳答案 Clang错误(#34091)来自[dcl.type.class.deduct]:Aplaceholderforaded

c++ - OMP - 线程数多于处理器数?

默认OpenMP指令:opm_get_num_threads给出相当于处理器/内核的线程数。我有一台8核机器,所以它给了我8个线程。那是最大值吗?如果我特意指定多于8个,是否可以获取多于8个线程?谢谢 最佳答案 您可以根据需要设置任意数量的线程:intthreads=16;omp_set_num_threads(threads);http://msdn.microsoft.com/en-US/library/e16bady3%28v=vs.80%29但请确保您了解使用比系统中的逻辑核心更多的线程的缺点。

c++ - 为什么 clang 和 gcc 以不同的方式处理具有类内初始化的结构的支撑初始化?

我最近发现了clang和gcc的一个奇怪行为。我有一个结构(MyClass),它对其其中一个成员(active)使用类内初始化:structMyClass{intsomething;boolactive=true;};现在我尝试用大括号初始化这个类。使用clang,我可以决定是否在初始化列表中包含active(MyClassa={42,true};)或不包含(MyClassa={42};).但是使用gcc,我的代码只有在不包含active时才能编译。否则,我将得到以下编译器错误:error:couldnotconvert‘{42,true}’from‘’to‘MyClass’这是一个错

c++ - Clang 不会编译 gcc 会编译的模板特化

Gcc可以正常编译,但Clang(主干)拒绝并显示以下消息::7:8:error:classtemplatepartialspecializationisnotmorespecializedthantheprimarytemplate[-Winvalid-partial-specialization]https://godbolt.org/g/h8rsWCtemplatestructS{};templatestructS{};这段代码是否正确? 最佳答案 这仅在-std=c++17及更高版本中出现。“更专业”的确定需要synthes

c++ - 无法使用 clang 交叉编译为 SPARC

所以情况是这样的:我需要能够从能够从SPARC服务器运行的Linux机器(在Ubuntu上,就其值(value)而言)编译二进制文件。我要编译的程序非常简单:#include#includeintmain(){printf("TestingtheSPARCprogram...");returnEXIT_SUCCESS;}我已经尝试了许多不同的编译行来让它工作,但不幸的是似乎没有任何效果。我试过传统的:clang-targetsparcblah.c-oblahsparc但这行不通,出现了一堆汇编程序错误:/tmp/blah-519e77.s:Assemblermessages:/tmp/

c++ - 使用带有 clang++ 而不是 g++ 的 std::acos 的 Constexpr 编译错误

我想尝试将一个项目从gcc迁移到clang++。我承认我的无知,我不确定为什么会出现以下代码templateconstexprTpi{std::acos(T(-1.0))};使用g++静默编译,但clang++产生错误trig.hpp:3:13:error:constexprvariable'pi'mustbeinitializedbyaconstantexpressionconstexprTpi{std::acos(T(-1.0))};我希望比我更了解它的人可以启发我。注意:尝试使用-std=C++14和C++1y。在clang版本3.6.2(tags/RELEASE_362/fin

c++ - 你如何为 clang 和 gcc 编写一个 makefile?

我想在我的代码中使用std::experimental::filesystem,这需要我使用-lstdc++fs与GCC和进行编译-lc++experimental使用Clang。目前我有一个makefile和makefile.clang反射(reflect)了编译的差异,或者我考虑过使用clang构建目标以便我可以运行buildclang.是否有一些规范的方法可以在makefile中设置特定于编译器的标志? 最佳答案 正如用户“Someprogrammerdude”提到的,有conditionals在GNU中。您可以通过这种方式轻

c++ - Clang 定义了什么宏来宣布 C++11 模式(如果有)?

Clang定义了什么宏来宣布C++11模式(如果有)?GCC定义了__GXX_EXPERIMENTAL_CXX0X__,至少有些版本是这样的。MSVC似乎至少对_MSC_VER>=1600默认启用了支持。 最佳答案 它对每个单独的功能使用不同的预处理器测试,例如#if__has_feature(cxx_decltype)用于测试decltype是否被实现。在此处查看完整列表http://clang.llvm.org/docs/LanguageExtensions.html#checking_upcoming_features

c++ - 为什么 clang 或 gcc 不标记这种从 double 到 int 的隐式转换?

考虑以下代码:voidf(intx){std::cout这会在没有任何警告的情况下编译和运行(使用-Wall),因此隐藏了从double到int的危险隐式转换。如果使用文字调用函数,编译器将捕获转换,即f(1.5)但这并不是那么有用。为什么这些编译器不对此转换发出警告?我在OSX10.8.3上使用gcc-4.2.1和clang-425.0.28。 最佳答案 为了后代:为了避免隐式转换,请使用-Wconversion标志(它不包含在-Wall中)。Clang实际上在-Weverything标志中包含-Wconversion,但此标志启