问题标签 [clang++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 异常规范在声明和功能实现中不兼容
我们有以下代码
GCC 和 clang 可以很好地编译它。但是,在标准中有这样一段:
n3376 15.4/4
如果函数的任何声明有一个异常规范,该规范不是允许所有异常的 noexcept规范,则该函数的所有声明,包括定义和任何显式特化,都应具有兼容的异常规范。
对于以下示例: gcc - 错误,clang - 警告
为什么这些片段有区别?谢谢。
c++ - 模板类的模板化构造函数的显式实例化
我不确定这是 Clang 3.2 中的错误还是违反 C++03,但似乎模板类的模板化构造函数的显式实例化失败,但模板类的模板化成员函数的显式实例化成功。
例如,使用 clang++ 和 g++ 编译以下代码没有问题:
而以下使用 g++ 编译时没有警告但使用 clang++ 失败:
特别是,我看到了两条错误消息:
这是违反标准还是clang ++中的错误?
libc++ - clang++ 找不到文件
我正在尝试使用 clang 编译我的 c++ 项目(使用带有 boost 的 g++)。我已经使用 clang 工具链成功编译了 boost-libraries (1.53)。我正在使用 CMake 编译我的项目,编译失败并出现以下错误。
我正在传递-stdlib=libc++
给编译器。我不确定应该安装哪个软件包(ubuntu)来安装 libc++。我的机器上安装了 clang 和 llvm。
我必须下载和编译 libc++ 还是在安装 clang 时自动安装?
windows - 为什么 Clang++ 不编译代码在 Windows 上?
为什么 clang++ 编译这个:
并且不想编译这个:
命令行:
clang++ -c hello.cpp -emit-llvm -o hello.bc
像这样发出太多错误:
Windows 7 64、clang-3.2、llvm-3.2、VS2012
=====更新=====
命令行(带 -v):
我得到什么:
..ETC。接着:
..ETC。所以...-internal-isystem
指向错误的路径。如何改变它?
c++ - g++ 和 operator << 在评估期间更改值时会产生意外结果
这是一些简单的代码。
当用 g++ -O0 (4.7.2) 编译它时,输出是 a413b,对于 -O2,输出是 a414b。对于 clang++ 3.2,输出是 a314b。
在这部分代码中,我是否为 c++ 做了任何未定义的事情?
c++ - g++/clang++中的参数顺序与makefile
在 Ubuntu 12.04 上使用 CERN 的 ROOT 时,我偶然发现了这个非常烦人的问题,但我认为这是一个更普遍的问题。
我有一些带有外部引用的 C++ 代码,我使用以下 makefile 编译和链接这些代码。在我的带有 OS X 10.8 的 Mac 和带有 SL5 的服务器上,这可以正常工作。
它评估为
这给了我未定义的引用和 Ubuntu 服务器上的链接器错误。我已经尝试过设置库,LDFLAGS
但它会产生相同的结果。当我手动编译它并将源文件和 -o 选项放在库之前时,它编译没有问题。
从其他线程中,我认为命令的顺序可能很重要,但我想知道为什么它在某些机器上起作用而在其他机器上却没有。即使顺序很重要,我认为make
自己足够聪明,可以自己解决。
现在的问题是:我该如何解决这个问题?我必须使用不同版本的 make 或 ld 吗?我必须修改我的makefile吗?
提前致谢!
c++ - Clang ++不理解mac终端中的c ++ 11
我正在尝试在 mac 终端中编译一些 c++ 代码(使用 c++11)。我试过了
但我得到了错误
我的 xcode 完全是最新的,我假设我在终端做错了什么?代码在 xcode 本身中运行良好,我只是无法让它在终端中运行。任何提示都会很棒!
c++ - G++、clang++ 和 std::function
我只是在玩 C++11 中的新 std::function,我写了一个使用 clang++ 3.2 和英特尔 C++ 编译器 13.1 编译但不使用 g++ 4.8 编译的示例。在我将此报告为错误之前,我想我会检查我没有做一些非常愚蠢的事情并且这应该实际编译。那么,以下代码是有效的 c++11 吗?
我意识到这段代码不是很有用,但令我感到奇怪的是,clang 和英特尔 C++ 编译了它而 gcc 没有。
编辑:gcc 在传递 map 仿函数或函数指针时也不会编译相同的代码:
clang 和 icpc 也编译这两个。
windows - 使用 Clang++ 构建共享库
我正在尝试使用 Clang++ 构建一个共享库(Windows 的 dll)。
我已经运行了以下命令:
第一个命令可以正常工作,但是当我尝试构建 dll 时出现此错误:
这是我正在编译的文件:
linker - Clang 链接时间优化在 Fedora 18 上无法正常工作
我是clang的新手,所以很可能我在做一些愚蠢的事情。但是我花了几个小时寻找解决方案,包括在这里搜索,在那里我没有找到解决 -flto 与发行版提供的软件包的问题。此描述的详细信息特定于 Fedora 18,但我在 Ubuntu 13.04 上遇到了类似的问题,因此问题并非特定于 Fedora。要么是我,要么是铿锵。
问题:我正在尝试编译一个简单的 hello-world 程序,clang++ -flto
以获取链接时间优化的好处。没有 -flto 它工作正常。使用 -flto 无法链接。调用clang -flto -o hello hello.o -v
以查看完整的链接器命令行,我得到:
似乎有两个问题:
clang++ 将链接器调用为
/usr/bin/ld
,这不是黄金链接器。Fedora18 将黄金安装为/usr/bin/ld.gold
. 我试过从/usr/local/bin/ld
to创建一个符号链接/usr/bin/ld.gold
,验证which ld
说/usr/local/bin/ld
,但 clang++ 不使用它。它似乎是硬连线到/usr/bin/ld。clang++ 使用
-plugin /usr/bin/../lib/LLVMgold.so
. 这是错误的,因为铿锵的 Fedora 发行版将它放在/usr/lib64/llvm/LLVMgold.so
.
我尝试通过以下调整手动调用上面的链接器行:
替换
-plugin /usr/bin/../lib/LLVMgold.so
为-plugin /usr/lib64/llvm/LLVMgold.so
。这会产生错误消息hello.o: file not recognized: File format not recognized
。因此,非黄金链接器似乎了解插件,但不会采用包含 LLVM 位码的 .o。替换
/usr/bin/ld
为/usr/bin/ld.gold
。这有效,生成按预期运行的可执行文件。以上两者都用
--plugin
而不是-plugin
。这种变化没有任何区别。
那么对于喜欢坚持使用系统提供的软件包来使用 clang -flto 的人来说,最好的方法是什么?我希望有一个配置文件,或未记录的选项或环境变量可以让我覆盖这些。或者更好的是,我缺少一个包,“yum install ...”将修复它。
我不希望直接调用链接器,因为这样我的 makefile 需要知道他们应该不知道的系统对象和库(例如 crt1.o、crtbegin.o、crtend.o)。我也可以自己构建 clang,但我在它的配置脚本中没有看到任何可以让我配置链接器和插件路径的东西。
我正在运行 Fedora 18。计算机上唯一的非发行版软件包是 google chrome 和 VMware Tools(它是 VMWare Fusion 中的访客)。相关 Fedora 软件包的版本(截至今天,2013 年 4 月 29 日,整台计算机已“yum 更新”):