Questions tagged «clang»

有关clang LLVM编译器前端的问题。对于有关C的一般问题,请使用C标记。

2
为什么Clang优化x * 1.0而不优化x + 0.0?
为什么Clang会优化这段代码中的循环 #include <time.h> #include <stdio.h> static size_t const N = 1 << 27; static double arr[N] = { /* initialize to zero */ }; int main() { clock_t const start = clock(); for (int i = 0; i < N; ++i) { arr[i] *= 1.0; } printf("%u ms\n", (unsigned)(clock() - …

2
C ++标准委员会打算在C ++ 11中unordered_map销毁它插入的内容吗?
我刚刚度过了三天的时间,一直在寻找一个非常奇怪的错误,在这个错误中unordered_map :: insert()破坏了您插入的变量。这种高度非显而易见的行为仅发生在最近的编译器中:我发现clang 3.2-3.4和GCC 4.8是唯一展示此“功能”的编译器。 这是我的主要代码库中的一些简化代码,可以说明该问题: #include <memory> #include <unordered_map> #include <iostream> int main(void) { std::unordered_map<int, std::shared_ptr<int>> map; auto a(std::make_pair(5, std::make_shared<int>(5))); std::cout << "a.second is " << a.second.get() << std::endl; map.insert(a); // Note we are NOT doing insert(std::move(a)) std::cout << "a.second is now " << a.second.get() << std::endl; return 0; …
114 c++  gcc  c++11  clang  standards 

17
编译问题:找不到crt1.o
我有一个用于开发的虚拟Debian系统。 今天,我想尝试llvm / clang。 安装clang后,我无法使用gcc编译旧的c项目。这是错误: ... /usr/bin/ld: cannot find crt1.o: No such file or directory /usr/bin/ld: cannot find crti.o: No such file or directory collect2: ld returned 1 exit status ... 我卸载了clang,但仍然无法正常工作。 有谁知道我该如何解决?
114 gcc  clang  ld 

5
Linux中PATH_MAX在哪里定义?
我应该调用哪个头文件#include才能将PATH_MAX用作用于调整字符串大小的int? 我希望能够声明: char *current_path[PATH_MAX]; 但是当我这样做时,我的编译器(Linux上为Clang / LLVM)发出以下错误: recursive_find6.c:29:20: error: use of undeclared identifier 'PATH_MAX' char *current_path[PATH_MAX]; ^ 我试图做一个谷歌搜索,但仍然没有运气。 #include <limits.h> 不能解决问题/错误。 我是否也正确将PATH_MAX的值设置为int?
112 c  linux  gcc  include  clang 

3
我可以使用哪个预定义的宏来检测clang?
我正在尝试检测用于编译我的源代码的编译器。我可以轻松地找到预定义的宏来检查MSVC或GCC(例如,请参阅http://predef.sourceforge.net/),但是我找不到任何要检查clang的宏。 有人知道clang是否定义了一个宏__CLANG__,以便知道当前正在编译我的代码吗?

2
使用clang更快地完成代码
我正在研究使用clang的代码完成机制时潜在的代码完成加速。下面描述的流程是我在Anders Bakken的rtags中找到的。 守护程序监视文件分析转换单元的更改。这是通过调用clang_parseTranslationUnit和相关函数(reparse*,dispose*)完成的。当用户请求源文件中给定行和列的完成时,守护程序会将源文件的最后保存版本和当前源文件的缓存翻译单元传递给clang_codeCompleteAt。(Clang CodeComplete docs)。 传递给clang_parseTranslationUnit(从CompletionThread :: process,第271行的)标志是CXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults|CXTranslationUnit_SkipFunctionBodes。传递给clang_codeCompleteAt(从CompletionThread :: process,行305)的标志是CXCodeComplete_IncludeMacros|CXCodeComplete_IncludeCodePatterns。 调用clang_codeCompleteAt非常慢-即使完成位置是合法的成员访问代码(的文档中提到的预期用例的子集),也要花费3-5秒才能获得完成clang_codeCompleteAt。根据IDE代码完成标准,这似乎太慢了。有加速的方法吗?

2
GCC -g vs -g3 GDB标志:有什么区别?
使用gcc或Clang编译C源代码时,我总是使用该-g标志来生成gdb的调试信息。 gcc -g -o helloworld helloworld.c 我注意到有些人推荐了-g3。-g和-g3标志之间有什么区别?-g和之间还有区别-ggdb吗?
102 c  debugging  gcc  gdb  clang 


5
如何使用Clang编译C ++?
我已经在Ubuntu中使用apt-get 安装了Clang,并且可以使用它成功编译C文件。但是,我不知道如何通过它编译C ++。我需要做什么来编译C ++?
97 c++  clang 

14
Xcode 4(和依赖项)的编译,生成或存档问题
在过去的几周中,这个问题有所发展,涵盖了与 xcode4 (并且升级项目的时间较早 代码s)。 但是,通过遵循同一组说明可以解决许多问题。 如果您有以下任何问题,请尝试接受的答案中的方法: Xcode 4无法存档应用 Xcode 4创建了不可用的存档 Xcode 4不会创建.ipa Xcode 4由于预处理器错误而无法编译 Xcode 4找不到标题 Xcode 4的代码完成不起作用 项目相关性无法编译 添加依赖关系会导致上述任何问题 原始问题 标题:Xcode 4中的“找不到词法或预处理程序问题文件” 我在Xcode 4中有一个项目,该项目可以很好地构建并在设备和模拟器上运行,但是在查找与静态库关联的头文件时尝试将其存档时出错: In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15: In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23: In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11: In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10: /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file …

8
clang:如何列出支持的目标架构?
目前,我对ARM感兴趣,尤其是对iphone / android目标感兴趣。但我只想了解更多有关c的知识,因为它在未来几年中将发挥重要作用。 我试过了 clang -cc1 --help|grep -i list clang -cc1 --help|grep arch|grep -v search clang -cc1 --help|grep target -triple <value> Specify target triple (e.g. i686-apple-darwin9) 我知道clang具有-triplet参数,但是如何列出所有可能的值?我发现clang与gcc在交叉编译方面有很大不同,在GCC世界中,您应该为所有内容使用单独的二进制文件,例如PLATFORM_make或PLATFORM_ld(i * 86-pc-cygwin i * 86-*-linux-gnu等。http ://git.savannah.gnu.org/cgit/libtool.git/tree/doc/PLATFORMS) 在clang世界中,它只是一个二进制文件(正如我在某些论坛上所读到的)。但是,如何获得受支持目标的列表?如果我的发行版(linux / windows / macos / whatever)不支持我的目标,我该如何获得支持更多平台的目标呢? 如果我是这样的SVN最新的clang: svn co http://llvm.org/svn/llvm-project/cfe/trunk clang 我将获得大部分平台吗?看起来Clang并不是马上就考虑到交叉编译而构建的,但是由于它是基于llvm的,因此在理论上应该是非常交叉友好的?谢谢!
94 clang  llvm 

13
适用于Windows的LLVM C ++ IDE
是否有一些适用于Windows的C / C ++ IDE ,就像现代Xcode一样,该IDE 与LLVM编译器(和Clang C / C ++分析器)集成在一起。 我有Dev-Cpp(它使用了过时的GCC)和Code :: Blocks(带有一些GCC)。但是GCC给了我非常神秘的错误信息。我想从Clang前端获得一些更加用户友好的错误消息。 是的,Clang不能与复杂的C ++代码一起使用,但是Clang干线已经可以编译LLVM本身。所以我想知道是否有任何LLVM IDE正在开发中或处于beta版本中。 是的,我可以将Clang用作具有GCC兼容IDE的其他编译器。但是,有没有与Clang 集成的 IDE ?Clang具有不同的输出格式,因此IDE必须对其进行解析。Clang可以提供源代码的IDE解析。Clang具有分析选项,IDE必须支持该选项。看一下,例如http://iosdevelopertips.com/xcode/static-code-analysis-clang-and-xcode-3-2.html Clang最想要的功能是智能自动完成功能,因此IDE只能建议语法正确的变体,例如,仅列出此struct,class的字段。 结果:(与答案合并): 带有CDT> = 8并带有https://code.google.com/archive/p/llvm4eclipsecdt/插件的Eclipse(来自Petri Tuononen)(没有自动完成功能) LLVM项目中的带vimrc的Vim(仅智能完成吗?)https://llvm.org/viewvc/llvm-project/llvm/trunk/utils/vim/ 具有(仅智能完成功能的)Emacs https://llvm.org/svn/llvm-project/cfe/trunk/utils/clang-completion-mode.el Qt创建者:https : //blog.qt.io/blog/2011/10/19/qt-creator-and-clang/ CodeLite:http://www.codelite.org/LiteEditor/ClangIntegration35
92 c++  windows  ide  llvm  clang 

3
lang优化级别
海合会,手动解释什么-O3,-Os等转化为在特定的优化参数方面(-funswitch-loops,-fcompare-elim,等) 我正在为clang寻找相同的信息。 我在网上看过,man clang并且只提供一般信息(-O2优化多于-O1,-Os针对速度进行了优化,…),还在此处查看Stack Overflow并发现了这一点,但是在引用的源文件中没有发现任何相关信息。 编辑:我找到了答案,但是我仍然很感兴趣是否有人链接到用户手册,该手册记录了所有优化过程以及所选择的过程。目前,我仅找到此通行证列表,但在优化级别上却一无所获。-Ox

4
令人困惑的模板错误
我一直在玩clang,我偶然发现了“ test / SemaTemplate / dependent-template-recover.cpp”(在clang发行版中),它应该提供从模板错误中恢复的提示。 可以很容易地将整个过程简化为一个最小的示例: template<typename T, typename U, int N> struct X { void f(T* t) { // expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}} t->f0<U>(); } }; c发出的错误消息: tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template name t->f0<U>(); …
91 c++  templates  llvm  clang 

2
是否允许这种浮点优化?
我试图检查哪里float失去了精确表示大整数的能力。所以我写了这个小片段: int main() { for (int i=0; ; i++) { if ((float)i!=i) { return i; } } } 该代码似乎适用于所有编译器,但不包括clang。Clang生成一个简单的无限循环。上帝保佑。 可以吗?如果是,那是QoI问题吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.