草庐IT

c++ - 在 Visual Studio 的 clang 中启用 C++14

我已经安装了clang3.7,我正在将它与VisualStudio一起使用。当我尝试编译时:autof(){return2;}我收到错误消息,说这是C++14的future。我已经尝试过:-std=c++14作为编译器参数,但随后出现错误:错误1​​错误:未知参数:'-std=c++14'C:\Users...\visualstudio2013\Projects\ConsoleApplication8\ConsoleApplication8\clang-cl.exeConsoleApplication8。任何想法如何在VisualStudio2013下的clang中启用c++14功能?

c++ - 使用 clang API 打印参数的类型 (ParmVarDecl)

我需要使用clangAPI在C++源文件中打印参数的类型。如果我在clang(ParmVarDecl*param)中有参数表示,我可以使用param->getNameAsString()打印参数的名称。我需要一个方法param->getTypeAsString(),但没有这样的方法。那么还有其他方法可以完成这项任务吗? 最佳答案 在llvmirc中得到了我的问题的答案:有一个方法std::stringclang::QualType::getAsString(SplitQualTypesplit)所以这对我有用:ParmVarDecl

c++ - 使用 clang API 打印参数的类型 (ParmVarDecl)

我需要使用clangAPI在C++源文件中打印参数的类型。如果我在clang(ParmVarDecl*param)中有参数表示,我可以使用param->getNameAsString()打印参数的名称。我需要一个方法param->getTypeAsString(),但没有这样的方法。那么还有其他方法可以完成这项任务吗? 最佳答案 在llvmirc中得到了我的问题的答案:有一个方法std::stringclang::QualType::getAsString(SplitQualTypesplit)所以这对我有用:ParmVarDecl

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++ - 将 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