草庐IT

c++ - 使用 clang 选择特定的 libstdc++ 版本

我使用clang++来编译C++代码。我链接到gcc标准C++库libstdc++。但是,我在我的Ubuntu机器上安装了几个不同的libstdc++。当我运行clang++时,它使用了libstdc++的4.8安装:andy@andy:~$clang++-3.5-vUbuntuclangversion3.5.0-4ubuntu2~trusty2(tags/RELEASE_350/final)(basedonLLVM3.5.0)Target:i386-pc-linux-gnuThreadmodel:posixFoundcandidateGCCinstallation:/usr/bin/

c++ - std::AVX 内在函数数组

我不知道我对AVX内在函数如何与std::array一起工作的理解是否遗漏了什么,但是当我将两者结合使用时,我遇到了一个奇怪的Clang问题。示例代码:std::arraygen_data(){std::arrayres;res[0]=_mm256_set1_ps(1);returnres;}voidmain(){autov=gen_data();floata[8];_mm256_storeu_ps(a,v[0]);for(size_ti=0;iClang3.5.0的输出(上面的4个float是垃圾数据):11118.82272e-3905.88148e-390GCC4.8.2/4.9

c++ - 禁用 Clang 工具诊断

这将是一个一般性问题。我目前正在为clang编写一个与AST遍历相关的工具。所以我有一个frontendaction来创建一个ASTConsumer,它还有一个RecursiveASTVistor。我调用Tool.run()来执行我的操作。它运行良好,但默认情况下clang会打印出我尝试分析的repo中的所有警告和错误。无论如何我可以禁用clang诊断吗?我知道当我们用clang编译时,-w选项都会禁用诊断。但是我们如何为工具做到这一点?顺便说一下,我的工具位于/llvm/tools/clang/tools/extra/mytool谢谢。 最佳答案

c++ - 使用 g++ 和 clang++ 调用 Integral 模板成员函数时出错

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭7年前。我目前陷入编译错误,我无法真正识别...这是一个最小的工作示例:#includetemplateclassa_type{public:templatedoublesegment(){return42;}};templatedoublefunc(){a_typea;returna.segment();}intmain(intargc,char*argv[]){std::cout()来自GCC的错误信息如下:g++main.

c++ - 使用 -fshort-wchar 的含义

在MacOSX系统上浏览文件wchar.h时,我发现当__cplusplust未定义且wchar_t的最大大小为2个字节(通过使用编译器选项-fshort-wchar)。对于C程序来说,如果定义了-fshort-wchar,似乎是不允许使用这样的函数的。我想知道当使用-fshort-wchar时使用wchar_t函数意味着什么?您可能想知道为什么我需要使用-fshort-wchar。因为,我正在移植一个最初为Windows编写的应用程序,其中wchar_t的大小是两个字节。保存在wchar_t字符串中的数据被写入文件并在两个应用程序之间交换。在不同平台上处理wchar_t可变性的好方法

c++ - 在带有 Xcode 的 Mac OS Mavericks 上,clang++ 默认为 lib=stdlibc++?

我正在运行带有Xcode5.1.1的MacOSXMavericks,包括命令行工具。我正在使用Xcode提供的clang++编译简单的C++程序,版本信息是:AppleLLVM版本5.1(clang-503.0.40)(基于LLVM3.4svn)我发现如果我尝试运行以下命令clang++-ohello.outhello.cpp我收到以下错误:Undefinedsymbolsforarchitecturex86_64:"std::ios_base::Init::Init()",referencedfrom:___cxx_global_var_initinhello-2ad0da.o"st

c++ - 标识符字符集 (clang)

我从不使用clang。而且无意中发现了这段代码:#includevoidфункция(intпеременная){std::cout将编译正常:http://rextester.com/NFXBL38644(clang3.4(clang++-Wall-std=c++11-O2)).它是clang扩展吗??为什么?谢谢。UPD:我想问的是为什么clang会做出这样的决定?因为我从来没有发现有人想要比c++标准现在更多的字符的讨论(2.3,修订版3691) 最佳答案 与其说它是一个扩展,不如说它是Clang对标准的多字节字符部分的解

c++ - Clang 提示 : "pointer is initialized by a temporary array"

我有一个不同长度的(指向)数组的数组,我了解到我可以使用复合文字来定义它:constuint8_t*constminutes[]={(constuint8_t[]){END},(constuint8_t[]){1,2,3,4,5END},(constuint8_t[]){8,9,END},(constuint8_t[]){10,11,12,END},...};gcc很好地接受了这一点,但clang说:指针由一个临时数组初始化,它将在完整表达式结束时被销毁。这是什么意思?代码似乎可以正常工作,但话又说回来,许多事情似乎在指向不再分配的内存时可以正常工作。这是我需要担心的事情吗?(最终我真

c++ - C++11/C++14 中的自动和大括号初始化

这个问题在这里已经有了答案:Differentcompilerbehaviorforexpression:autop{make_pointer()};(1个回答)关闭7年前。当我用clang和gcc编译下面的代码时T推导不同。#include//forclang//toseehowTisdeduced(formcompilererror).templatevoidfoo(T);intmain(){autovar1{2};foo(var1);}这是我得到的。clang3.6(c++11/c++14)gcc4.9(c++11/c++14)T=std::initializer_listgcc

c++ - clang 似乎没有链接到库

我将问题归结为以下示例:intmain(){try{throwfalse;}catch(boolx){if(x){return0;}else{return1;}}}在Coliru上生成以下错误:/tmp/main-c8b47a.o:Infunction`main':main.cpp:(.text+0xf):undefinedreferenceto`typeinfoforbool'/tmp/main-c8b47a.o:Infunction`GCC_except_table0':main.cpp:(.gcc_except_table+0x30):undefinedreferenceto`t