草庐IT

CLANG_ARGS

全部标签

c++ - 将 std::shared_ptr 与 clang++ 和 libstdc++ 一起使用

我正在尝试使用libstdc++(4.6.1)在clang++(clang版本3.1(trunk143100))中使用std::shared_ptr。我有一个小演示程序:#includeintmain(){std::shared_ptrsome(newint);std::shared_ptrother(some);return0;}可以使用:clang++-std=c++0x-omainmain.cpp并给出以下错误输出:main.cpp:6:23:error:calltodeletedconstructorof'std::shared_ptr'std::shared_ptrother

c++ - 有没有办法在输出二进制文件中存储 clang 编译时标志?

使用clang时,有没有办法将编译时标志存储在输出二进制文件中?例如运行后:clang-O3-cmain.c生成的main.o文件应该在某处包含-O3。gcchas-frecord-gcc-switches但我找不到clang的等价物。 最佳答案 正如ecatmur已经在评论中暗示的那样。目前不支持此功能,如错误https://llvm.org/bugs/show_bug.cgi?id=16291中所述。.但是,当该功能不可用时,作为一种解决方法,我建议让您的构建过程使用clang的-D参数在程序内定义一个宏。例如,假设您从bash

c++ - 有没有办法在输出二进制文件中存储 clang 编译时标志?

使用clang时,有没有办法将编译时标志存储在输出二进制文件中?例如运行后:clang-O3-cmain.c生成的main.o文件应该在某处包含-O3。gcchas-frecord-gcc-switches但我找不到clang的等价物。 最佳答案 正如ecatmur已经在评论中暗示的那样。目前不支持此功能,如错误https://llvm.org/bugs/show_bug.cgi?id=16291中所述。.但是,当该功能不可用时,作为一种解决方法,我建议让您的构建过程使用clang的-D参数在程序内定义一个宏。例如,假设您从bash

c++ - 使用 Clang 的 scan-build 和 scons 和 C++11

我已将所有内容添加到我的$PATH中,并根据这些答案调整了我的SConstruct以设置适当的环境变量[1,2,3]。现在当我运行时scan-build--use-c++=`whichclang++`scons构建开始,我可以看到sconsfork的进程是/path/to/c++-analyzer...-std=c++11...目标文件成功构建,但随后出现错误:couldnotfindclangline当派生进程不包含字符串-cc1时,c++-analyzer会出现此错误。但是如果我检查psaux,我会清楚地看到/path/to/clang-cc1...程序怎么会正确构建,但静态分析器

c++ - 使用 Clang 的 scan-build 和 scons 和 C++11

我已将所有内容添加到我的$PATH中,并根据这些答案调整了我的SConstruct以设置适当的环境变量[1,2,3]。现在当我运行时scan-build--use-c++=`whichclang++`scons构建开始,我可以看到sconsfork的进程是/path/to/c++-analyzer...-std=c++11...目标文件成功构建,但随后出现错误:couldnotfindclangline当派生进程不包含字符串-cc1时,c++-analyzer会出现此错误。但是如果我检查psaux,我会清楚地看到/path/to/clang-cc1...程序怎么会正确构建,但静态分析器

c++ - 为什么 GCC 为 0.0/0.0 产生 -nan 和 clang 和 intel 产生 +nan?

当我调试代码时,我发现GCC和Clang都为0.0/0.0产生nan,这是我所期望的,但GCC产生的nan将符号位设置为1,而Clang将其设置为0(如果我没记错的话,与ICC一致)。现在显然这两种形式都是允许的,但我一直想知道为什么0.0/0.0会使GCC输出“否定”结果(打印它会给出-nan),并且-(0.0/0.0)给出“肯定”结果?更令人困惑的是,-0.0/0.0又是“负数”了。这是一个不断折叠的怪癖吗?编辑实际上,正是不断的折叠使它成为一个积极的nan。如果我在运行时强制计算,我会在GCC和Clang上得到负nanvolatilefloatzero=0.0;std::cout

c++ - 为什么 GCC 为 0.0/0.0 产生 -nan 和 clang 和 intel 产生 +nan?

当我调试代码时,我发现GCC和Clang都为0.0/0.0产生nan,这是我所期望的,但GCC产生的nan将符号位设置为1,而Clang将其设置为0(如果我没记错的话,与ICC一致)。现在显然这两种形式都是允许的,但我一直想知道为什么0.0/0.0会使GCC输出“否定”结果(打印它会给出-nan),并且-(0.0/0.0)给出“肯定”结果?更令人困惑的是,-0.0/0.0又是“负数”了。这是一个不断折叠的怪癖吗?编辑实际上,正是不断的折叠使它成为一个积极的nan。如果我在运行时强制计算,我会在GCC和Clang上得到负nanvolatilefloatzero=0.0;std::cout

c++ g++ llvm-clang 编译器分析

请注意,我的问题不是:我如何告诉我的编译器在开启分析的情况下进行编译。我想配置我的编译过程。对于每个文件,我想知道程序的每一行花费了多少时间。我正在处理一个项目,有些文件的编译时间很长,我正在尝试找出原因。有没有办法用g++或llvm-clang做到这一点?谢谢!-v-ftime-report的输出(什么意思)?下面是“解析器”还是“扩展”模板的使用?Executiontimes(seconds)callgraphconstruction:0.06(2%)usr0.00(0%)sys0.09(2%)wall3181kB(1%)ggccallgraphoptimization:0.05(

c++ g++ llvm-clang 编译器分析

请注意,我的问题不是:我如何告诉我的编译器在开启分析的情况下进行编译。我想配置我的编译过程。对于每个文件,我想知道程序的每一行花费了多少时间。我正在处理一个项目,有些文件的编译时间很长,我正在尝试找出原因。有没有办法用g++或llvm-clang做到这一点?谢谢!-v-ftime-report的输出(什么意思)?下面是“解析器”还是“扩展”模板的使用?Executiontimes(seconds)callgraphconstruction:0.06(2%)usr0.00(0%)sys0.09(2%)wall3181kB(1%)ggccallgraphoptimization:0.05(

c++ - Windows 上的 Clang/LLVM 7 和 8 多次初始化内联静态数据成员(同时使用 link.exe 和 lld-link.exe)

Windows上的Clang/LLVM7和8初始化内联静态数据成员每个TU一次。据我了解C++17这是不正确的。虽然一个内联变量可以在多个TU中定义,但编译器和/或链接器必须确保它在程序中只存在一次,因此只初始化一次。以下小程序展示了使用Clang/LLVM会发生什么(在VisualStudio2017和2019RC中测试,带有LLVM编译器工具链扩展)://header.h#includestructA{A(){std::cout//TU1.cpp#include"header.h"intmain(){S::a.f();}//TU2.cpp#include"header.h"//TU