草庐IT

CLANG_ARGS

全部标签

c++ - 将 args 作为对具有(无)常量性的指针的引用传递给不同的地址

voidf(char*&pch){cout给出下一个输出:0xbfa0d62c12345678900xbfa0d62c1234567890但如果我将第一行修改如下voidf(charconst*const&pch){我会得到:0xbfec7df812345678900xbfec7dfc1234567890是否因为需要将新的内存单元标记为const或其他原因而出现指针差异? 最佳答案 pch2是一个char*,而不是一个charconst*。您不能将charconst*&类型的引用绑定(bind)到char*类型的指针,因此以下格式不

c++ - 当代码不严格符合标准时,如何强制 clang 抛出错误?

我正在编写一个C++11库,我希望它能与支持C++11的每个编译器一起使用。我不想不小心编写不标准的代码(例如使用VLA或block等语言扩展)。如何强制clang禁用所有语言扩展,以便我只能编写一致的代码? 最佳答案 尝试oneofthese:-pedantic:Warnonlanguageextensions.-pedantic-errors:Erroronlanguageextensions. 关于c++-当代码不严格符合标准时,如何强制clang抛出错误?,我们在StackOve

c++ - Clang 3.1 + libc++ 编译错误

我已经在Ubuntu12.04上使用GCC-4.6成功地构建并安装了(在前缀~/alt下)LLVM-Clang主干(2012年4月23日),然后使用这个Clang-build成功地安装了libc++.当我想使用它时,我必须提供-lc++和-libstdc++如下/home/per/alt/bin/clang-xc++-I/home/per/alt/include/v1-L/home/per/alt/lib-std=gnu++0x-g-Wall~/f.cpp-lm-lc++-lstdc++-lpthread-of编译f.cpp包含#includeusingstd::cout;usings

c++11 统一初始化不适用于 clang++

我从thiswikipediapage复制了以下示例:structBasicStruct{intx;doubley;};structAltStruct{AltStruct(intx,doubley):x_{x},y_{y}{}private:intx_;doubley_;};BasicStructvar1{5,3.2};AltStructvar2{2,4.3};intmain(intargc,charconst*argv[]){return0;}然后我尝试用编译它clang++-Wall-std=c++11test.cpp但是我得到这个错误:test.cpp:17:11:error:n

c++ - 在这种情况下,为什么 g++ 和 clang 会破坏 namespace 抽象?

编译:structstr{};namespacea{voidfoo(strs){}}namespaceb{voidfoo(strs){}voidbar(strs){foo(s);}}intmain(int,char**){return0;}但这不是(将结构定义移到命名空间a内)namespacea{structstr{};voidfoo(strs){}}namespaceb{voidfoo(a::strs){}voidbar(a::strs){foo(s);}}intmain(int,char**){return0;}我得到的错误是bad.cpp:Infunction‘voidb::b

c++ - 如何在 clang(或 gcc)中删除 C++ 名称?

我正在尝试为clang编写一个快速而肮脏的demangler。我找到了pieceofcode它使用abi::__cxa_demangle,但我不知道它需要哪个header。显而易见的选择是ABI.h但是:demangle.cpp:2:10:fatalerror:'ABI.h'filenotfound#include^使用abi::__cxa_demangle需要什么? 最佳答案 包括cxxabi.h。在Ubuntu13中,此header位于/usr/include/c++/4.x中,其中x是次要gcc版本。

c++ - 在 ubuntu 12.04 上设置 Xerces 以与 cmake 和 clang 一起使用

我想在我的项目中使用Xerces,我在cmake和clang的帮助下编译了它。我所做的是:下载源将其解压缩到名为“xerces-c-3.1.1”的文件夹cd进入那个文件夹./configuremakemakeinstall然后我写了LINK_DIRECTORIES(/usr/local/lib)进入我的CMakeLists.txt和#include进入我的main.cpp。它编译正常,但链接不起作用。我得到以下结果:LinkingCXXexecutableDG5_RECMakeFiles/DG5_RE.dir/main.cpp.o:Infunction`xercesc_3_1::XML

c++ - 使用默认初始化的 Clang 编译错误

这个问题在这里已经有了答案:DoIreallyneedtoimplementuser-providedconstructorforconstobjects?(4个答案)关闭7年前。考虑以下示例:#include#includestructA{//A()=default;//doesneithercompilewith,norwithoutthisline//A(){};//doescompilewiththislineintsomeVal{123};voidfoobar(int){};};intmain(){constAa;std::cout::valueSeeLiveexample这

c++ - sscanf 中 uint16_t 的正确且可移植的 (Clang/GCC) 修饰符是什么?

当我尝试编译这段代码时收到一条警告消息sscanf(value,"%h"PRIu16"B",&packet_size)使用Clang600.0.57(OSX)。warning:formatspecifiestype'unsignedchar*'buttheargumenthastype'uint16_t*'(aka'unsignedshort*')[-Wformat]if(sscanf(value,"%h"PRIu16"B",&packet_size)==1){~~~~^~~~~~~~~~~~但是如果我删除修饰符“h”,那么我会在GCC4.8.3(ScientificLinux7)中收

c++ - 为什么下面的代码不能用 gcc 编译但用 clang 编译得很好

下面的代码可以用clang编译,但不能用gcc编译,请问这是gcc中的错误吗?它只是一个包含unique_ptrvector和std::function作为成员的类,当我创建此类的vector时,我不能对此说保留或调整大小。push_back与std::move一起工作正常,而这只发生在gcc而不是clang上。#include#include#include#include#include#includeusingnamespacestd;classABC{public:ABC(){}private:std::vector>up;std::functionfunc;};intmain