问题标签 [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.

0 投票
2 回答
1038 浏览

c++ - clang++ 是否对局部静态变量进行线程安全初始化?

clang++ 是否对局部静态变量进行线程安全初始化?

GCC 确实如此,除非您使用误导性命名的-fno-threadsafe-statics. 我正在使用 Apple clang 2.0 版(tags/Apple/clang-139)(基于 LLVM 2.9svn)。

0 投票
5 回答
8147 浏览

c++ - 铿锵声“你好,世界!” windows中的链接错误

我刚刚下载了 CLang 源代码,使用 CMake 创建了一个 Visual C++ 10 IDE 工作区,并从 Visual C++ 10.0 (express) 构建了所有内容。

现在我在 hello world 上收到一堆链接器错误:

那么我能做些什么呢?

0 投票
2 回答
2860 浏览

c++ - clang++ 和 u16string

这行简单的代码和最新的 clang++ 我玩得很开心

0 投票
1 回答
1318 浏览

c++ - 在 Clang 上禁用“移动构造函数可用时删除复制构造函数”

在 StackOverflow 上查看这里我发现在 Clang++ 上使用 C++11 标准时,如果您已为您的类定义了移动构造函数,则隐式构造函数生成被禁用,即复制构造函数被“显式删除”。

有什么办法可以禁用这种行为?

另外,这种行为是否标准化?因为我在 GCC 中没有相同的行为。

0 投票
3 回答
247 浏览

c++ - 带有模板化基类成员的 g++ 编译器错误

我正在尝试使用 g++ 编译一些 Microsoft Visual C++ 代码。现在我遇到了一个我真的无法理解的编译器错误。(简化的)代码如下所示:

当我尝试使用 g++(版本 4.4.5)编译它时,我收到以下错误:

如果我从方法 A::call 中删除模板类型 (Ret),则代码编译得很好。任何人都可以看到这里有什么问题吗?

谢谢!

0 投票
2 回答
34332 浏览

c++ - g++ 4.6 版本号文件头 cstring 所要求的文件

bits/c++config.h头文件所需的 c++ 包含目录中没有调用cstring文件。但是当我包含标题cstring并使用 编译时g++,它不会给我错误。当我尝试通过clang++ 以下方式使用编译器编译程序时出现问题。

我在 Ubuntu 11.04 上使用 g++ 4.6.1

什么地方出了错?

0 投票
0 回答
880 浏览

macos - clang compiler warnings Mac OS X

When I compile my program I get compiler warnings. I have been trying to fix them for a while now.

This is how I compile:

This is the warning I get:

I used to compile it without warnings before apple switched to clang. right now c++ is just a symbolic link to clang.

I was wondering if smbd had the same kind of issue?

Any ideas?

Thanks


hmm... it seems like it is a bug(or feature): link.

But I think I found a work-around, instead of using MF to specify the output file, I just redirect it to the file like this:

0 投票
1 回答
945 浏览

c++ - clang 在查找声明方面与 gcc 有何不同

我有一个 util.h/.cpp ,其中 istreams 的 operator>> 重载,看起来像

在其他一些文件中,我使用这样的构造:

这与 gcc/g++ (v. 4.6.3) 配合得很好,但现在我想使用 clang (v 3.0) 并得到错误说明,找不到适当的运算符重载:

为什么clang找不到合适的声明,而gcc没有问题。我怎样才能解决这个问题?

0 投票
2 回答
2584 浏览

imagemagick - 使用自动工具将“-stdlib=libc++”传递给 c++ 链接器

我正在尝试使用 clang++ 和 libc++ 编译 ImageMagick(尤其是 Magick++)。因此我需要将 -stdlib=libc++ 传递给编译器和链接器。

虽然 CXXFLAGS="-stdlib=libc++" 可以正常编译,但 LDFLAGS="-stdlib=libc++" 似乎只影响 C 链接器。

链接 C++ 库时如何正确告诉 ./configure 或 make 使用此标志?

0 投票
1 回答
288 浏览

c++ - catch(...) 吞下 xcode llvm 3.0 中的所有其他捕获

我试图让 googletest 在我的 c++ 项目上运行,其中一部分涉及使用EXPECT_THROW(statement, expected_exception);. 我正在使用 XCode 并选择了“Apple LLVM Compiler 3.0”。所有这些都在 Snow Leopard 10.6.8、XCode 4.2 上。

即使使用显式虚拟案例,我也无法通过任何这些测试EXPECT_THROW(throw std::runtime_error(), std::runtime_error);

自己扩展宏(从 gtest/internal/gtest-internal.h:1114 GTEST_TEST_THROW_)到

然后在gdb中设置一个断点catch catch并单步执行,我可以看到catch(runtime_errors)被跳过,并且catch(...)正在执行。如果我注释掉该catch(...)块,则catch(std::runtime_error const& e)执行正确的语句。

将我的编译器设置为“LLVM GCC 4.2”可以解决这个问题,但我想以 clang++ 为目标。

我单独的 EXPECT_THROW 测试用例在命令行上使用 clang++ 手动编译时有效,所以我认为它一定是一些深奥的 xcode 或 llvm 设置?或者也许 LLVM 是如何将我的 runtime_error 变成其他类型的?我尝试了 acatch throw但可以在该上下文中获取任何类型信息。

有没有人经历过这种情况或有任何想法?

编辑:

所以我还与 libprofile_rt.dylib 以及编译器标志一起链接-fprofile-arcs -fprofile-coverage。删除编译器标志-fprofile-arcs消除了该问题。令人讨厌,因为它打破了我的报道报告。

(与 librpofile_rt.a 链接有同样的问题)

当然,我不是唯一看到这一点的人,因为 LLVM 据说使用 googletest 作为他们的测试用例?!

不确定我是否应该将其发布为答案,或者是否会有更多知识渊博的人出现并提供真正的解决方案。