首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

可以在旧的编译器选项std=c++0x中混合使用编译器选项std=c++11吗

在旧的编译器选项std=c++0x中混合使用编译器选项std=c++11是不可行的。这是因为std=c++0x是指C++11之前的标准,而std=c++11是指C++11标准。这两个标准之间存在一些不兼容的语法和特性。

在C++11标准中引入了一些新的语法和特性,例如自动类型推导、lambda表达式、智能指针等。这些新特性在旧的编译器中是不支持的。因此,如果你在旧的编译器选项std=c++0x中使用编译器选项std=c++11,编译器会报错或产生意料之外的行为。

为了混合使用std=c++0x和std=c++11,你需要使用支持C++11标准的编译器。这样,你就可以充分利用C++11的新特性,并确保代码的正确性和可移植性。

对于C++开发者来说,推荐使用腾讯云的云服务器(CVM)来搭建开发环境。腾讯云的云服务器提供了丰富的配置选项和高性能的计算能力,可以满足各种规模的开发需求。你可以通过以下链接了解腾讯云的云服务器产品:腾讯云云服务器

总结起来,混合使用std=c++0x和std=c++11需要使用支持C++11标准的编译器,而不是在旧的编译器选项std=c++0x中混合使用编译器选项std=c++11。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++11:MinGW当指定-std=c++11选项时 默认定义了__STRICT_ANSI__

这样就会关闭GNU C某些不兼容ANSI C特性,例如asm, inline和 typeof关键字,以及诸如unix和vax这些表明当前系统类型预定义宏.同时开启 不受欢迎和极少使用ANSI trigraph...尽管使用了-ansi选项,下面这些可选关键字, __asm__, __extension__, __inline__和__typeof__仍然有效.你当然不会把 他们用在ANSI C程序,但可以把他们放在头文件里...,编译器定义是否__STRICT_ANSI__取决于我们在编译代码时,是否使用了-ansi选项。...-std=c++11变化 但是到gcc全面支持C++11以后,这个逻辑好像就不对了。 下面是一段测试代码。...如果要在-std=c++11选项时不允许编译器预定义__STRICT_ANSI__,就在编译选项中指定 -U__STRICT_ANSI__ ?

1.9K20

小白也可以玩转CMake之常用必备

set(CMAKE_CXX_FLAGS "-std=c++0x -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wall") add_compile_options...(${CMAKE_CURRENT_SOURCE_DIR}/*.cpp PROPERTIES COMPILE_FLAGS "-std=c++11") 可以从以下手册查看大量属性,每个属性都可以用于满足您特定需求...GNU GCC 链接选项 https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html GCC链接器默认情况下可以环境变量定义目录(/usr/lib;/...以下是您可以添加链接器标志变量: CMAKE_EXE_LINKER_FLAGS:创建可执行文件时由链接器使用标志 CMAKE_EXE_LINKER_FLAGS_RELEASE:创建发布版本可执行文件时由链接器使用标志...CMAKE_SHARED_LINKER_FLAGS:创建共享库(.so、.dll)时由链接器使用标志 CMAKE_MODULE_LINKER_FLAGS:创建模块库时由链接器使用标志 例如,您可以使用以下代码添加链接器标志

34640

C++11 Unicode支持

1.char16_t与char32_t C++98,为了支持Unicode字符,使用wchar_t类型来表示“宽字符”,但并没有严格规定位宽,而是让wchar_t宽度由编译器实现,因此不同编译器有着不同实现方式...这一状况C++11得到了一定改善,从此Unicode字符存储有了统一类型: (1)char16_t:用于存储UTF-16编码Unicode字符。...3.影响字符串正确处理因素 使用不同方式定义不同编码字符串时,我们需要注意影响字符串处理和显示几个因素有编辑器、编译器和输出环境。...当编译器处理字符串时,可以通过前缀来判断字符串编码类型,如果目标编码与原编码不同,则编译器会进行转换,比如C++11前缀u8表示目标编码为UTF-8字符,如果代码文件采用是GBK,编译器按照UTF...4.Unicode库支持 C++11标准库增加了一些Unicode编码转换函数,开发人员可以使用一些新增编码转换函数来完成各种Unicode编码间转换,函数原型如下: //多字节字符转换为

2.4K31

C++11较C++03改进

例如: 列表初始化也可以运用在更复杂结构,如下所示: 4、C++数组 貌似这块儿是C++11添加功能。 C++11提供了std::array,目的是来取代C数组。...这是个尺寸可变轻量级数组,使用时候效果与std::vector差不多。 例子: 5、少许修正 C++03一些小缺陷在C++11得到了修正。...例如: 1 set>C++11可以编译了。(注意最后两个尖括号之间没有空间哦) 2 std::string 有了front和back成员函数。...3 文件流可以接受std::string类型文件名,意味着我们不再需要使用可笑c_str()进行转换。 4 可以很方便将数值想std::string进行类型转换。...1.GNU C++ 编译器需要加入 -std=c++0x 来编译 C++11 代码。

1.3K30

从Xcode10不再支持libstdc++说起

C++方言选项 我们可以通过下面的代码来验证C++语言对于方言支持选项,因为C++11才引入了对lamda表达式支持,因此你可以在你工程某个.mm文件函数实现内写一段lamda表达式: /...对于方言选择以及语言类型选择体现在编译选项-std= 上,这个选项通过查看Xcode编译消息详情就可以看出:如果文件后缀是.m,那么-std=后面的值就是C Language Dialect选项...为什么可以一个工程可以同时引入两个定义了相同内容类库呢?难道不会在编译时报符号冲突或者重名错误?...子命名空间中 inline关键字则是C++11为命名空间添加新关键字:可以父命名空间中定义内联子命名空间,内联子命名空间可以把其包含名字导入到父命名空间中,从而在父命名空间中可以直接访问子命名空间中定义名字...::cout << "hello2" << std::endl; } C++11标准输出流对象cout真实定义是std::__1这个命名空间中,但是因为std::__1::是内联子命名空间所以可以通过父命名空间

2K30

C++中使用CMake编译管理项目

原文链接:https://github.com/jacking75/examples_CMake CMake是一个跨平台Makefile生成工具,可以根据特定规则生成相应Makefile文件,并对...Documentation 官方CMake指南地址为:CMake Tutorial 一、CMake添加对C++11支持 1、在对应CMakeLists.txt文件中加入以下语句: add_definitions...}") endif(CMAKE_COMPILER_IS_GNUCXX) 2、延伸:如何写cmake使其包含c++11特性 (-std=c++11如何写进cmakeList.txt) 使用g++版本和...cmake使用示例, examples_CMake项目地址是:https://github.com/jacking75/examples_CMake CMake例子 范例介绍 示例代码CMake_example...2.8) add_definitions(-std=c++11) add_executable(Main main.cpp) 02 helloworld-设置编译器选项

3.8K20

C++多线程如何获取真正安全单例

事实上, 1、4也是一种可能结果。有两个基本原因造成这一后果: 编译器没有义务一定按代码给出顺序产生代码。事实上会根据上下文调整代码执行顺序,使其最有利于处理器架构,是优化很重要一步。...多处理器架构,各个处理器可能产生缓存不一致问题。取决于具体处理器类型、缓存策略和变量地址,对变量 y 写入有可能先反应到主存中去。...C++11跨平台实现 C++11可以用原子操作实现真正线程安全单例模式,具体实现如下: class singleton { public: static singleton* instance...Effective C++》提出另一种更优雅单例模式实现,使用 local static 对象(函数内 static 对象)。...C++0x之后该实现是线程安全C++0x之前仍需加锁。

2.2K00

cmake:设置编译选项讲究(add_compile_options和CMAKE_CXX_FLAGS区别)

https://blog.csdn.net/10km/article/details/51731959 cmake脚本,设置编译选项可以通过add_compile_options命令...使用这两种方式在有的情况下效果是一样,但请注意它们还是有区别的: add_compile_options命令添加编译选项是针对所有编译器(包括c和c++编译器),而set命令设置CMAKE_C_FLAGS...例如下面的代码 #判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持 if(CMAKE_COMPILER_IS_GNUCXX) add_compile_options(-std...添加-std=c++11选项,是想在编译c++代码时加上c++11支持选项。...#判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持 if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "-std=c++11

7.8K10

解决std::addressof找不到及eclipse lunna+cdt 8.6.0 支持 c++11设置

最近在eclipse下写c++代码,当用到std::addressof时,eclipse报错,说是无法解析这个函数: 但带两个下划线前缀同名函数std::__addressof却是可以,而且使用...但是代码vs2010下编译时又出错了,说是找不到 std::__addressof这个方法,但是可以可以找到addressof, 这可有点麻烦了,仔细研究了一下,原来addressof是纳入c+...如下图:eclipse内置编译器预定义宏变量 我用mingw版本是支持c++11标准,而且CMakeList.txt也特意加入了c++11支持选项,如下: #判断编译器类型,如果是gcc...STATUS "optional:-std=c++11") endif(CMAKE_COMPILER_IS_GNUCXX) 所以使用std::addressof方法时命令行编译是可以正常通过,但是...eclipse IDE内置编译器(CDT Built-in compiler)默认设置仍然没有支持c++11选项,所以eclipse IDE环境下使用std::addressof会报错。

63340

性能大杀器:c++copy elision

好了,仍然是上面的代码,如果编译选项变成-std=c++11 -fno-elide-constructors,输出试试,看看会是什么结果~~ emm,本地尝试编译并运行了下: Default ctor...,此处假设为temp2 Copy ctor // 通过调用拷贝构造函数,将temp2值赋值给o2 在上一节,我们提到过,可以通过使用移动构造方式来避免拷贝,为了测试该功能,尝试Obj类中新增一个移动构造函数...看了上述输出,不禁奇怪,为什么CreateObj2()函数,创建temp明明是一个左值,此处却调用是移动构造即当做右值使用呢?...volatile命名对象,其类型与函数返回类型相同时,编译器可以优化掉拷贝或移动操作,直接将自动对象构造到函数调用返回对象。...这意味着,当函数返回一个自动对象时,编译器可以优化掉不必要拷贝或移动操作,直接将自动对象构造到函数调用返回对象,以提高效率。这种优化 C++ 标准中被明确规定,以支持更高效代码生成。

10410

CMake常用命令一些整理

1.18 设置编译选项 设置编译选项可以通过add_compile_options命令,也可以通过set命令修改CMAKE_CXX_FLAGS或CMAKE_C_FLAGS。...命令添加编译选项是针对所有编译器(包括c和c++编译器),而set命令设置CMAKE_C_FLAGS或CMAKE_CXX_FLAGS变量则是分别只针对c和c++编译器。...如果未进行设置,使用ADD_LIBRARY时又没有指定库类型,默认编译生成库都是静态库; CMAKE_C_FLAGS 设置C编译选项,也可以通过指令ADD_DEFINITIONS()添加; CMAKE_CXX_FLAGS...设置C++编译选项,也可以通过指令ADD_DEFINITIONS()添加; CMAKE_C_COMPILER 指定C编译器; CMAKE_CXX_COMPILER 指定C++编译器; CMAKE_BUILD_TYPE...} -std=c++11") elseif(COMPILER_SUPPORTS_CXX0X) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x

1.5K10

opencl:C++11使用别名(x,y,z,hi,lo...)访问vector类型(cl_int2,cl_long16...)元素

---- opencl内核代码向量元素访问 opencl内核代码,对于opencl向量类型,既可以使用s0~sF(根据向量长度不同)来访问向量指定元素,也可以用元素别名来访问(x,y,...关于__STRICT_ANSI__来历,请参见我上一篇博客《C++11:MinGW当指定-std=c++11选项时 默认定义了__STRICT_ANSI__》(其实本文答案也隐藏在这篇博客里) 从这篇博客标题就可以得知...,而是因为我使用了-std=c++11选项导致编译器自动定义了__STRICT_ANSI__。...方案1: 第一个办法就是前述博客中最后提到办法:使用-std=c++11选项同时,加上-U__STRICT_ANSI__选项, 用于去掉__STRICT_ANSI__定义 如果你是用cmake...来编译项目代码,可以CMakeList.txt中加入这样代码 #判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持,并去掉__STRICT_ANSI__定义 if(CMAKE_COMPILER_IS_GNUCXX

1.1K10

Windows下C++使用thread时无法识别thread和mutex相关库解决

CLionC++编译器是正常,以前也跑过好几个项目,使用其他STL库函数也正常,唯独使用thread时报无法识别的错,所有thread都划上了红线。如下图所示: ?...后来受到博客CLion安装mingw并配置以支持c++11多线程编程启发,重新安装mingw编译器,但是不成功。...又看到博客mingw-w64安装支持c++11thread(windows下)操作,发现关键是安装mingw时需要将Thread选项设为posix。重新安装mingw解决问题。 ?...问题解决,可以愉快多线程啦 ? 总结 不能使用thread是因为mingw编译器不支持thread,需要重新安装mingw,安装方法引用两篇博客里都有。...同时需要确保建立工程时使用C++11及以上标准。

3.2K20

【C++初阶】--- C++入门(上)

但是:现在公司主流使用还是C++98和C++11,所以不用追求最新,重点将C++98和C++11掌握好,等日后,随着对C++理解不断加深,有时间可以去琢磨下更新特性。...流插入 return 0; } 注意:早期标准库将所有功能在全局域中实现,声明.h后缀头文件使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间...,规定C++头文件不带.h;编译器(vc 6.0)还支持格式,后续编译器已不支持,因此推荐使用 + std方式。...std命名空间使用惯例:std是C++标准库命名空间,如何展开std使用更合理呢? 日常练习,建议直接using namespace std即可,这样就很方便。...所以建议项目开发中使用,像std::cout这样使用时指定命名空间 + using std::cout展开常用库对象/类型等方式。

2100

C++11-列表初始化变量类型推导范围forfinal&override默认成员函数控制

之前最新C++标准名 不过由于TC1主要是对C++98标准漏洞进行修复,语言核心部分则没有改动,因此人们习惯性把两个标准合并称为C++98/03标准 从C++0xC++11,C+...相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员开发效率 二、列表初始化 背景引入: C++98,标准允许使用花括号...C++对于空类编译器会生成一些默认成员函数,如果在类显式定义了,编译器将不会重新生成默认版本 有时候这样规则可能被忘记,最常见是声明了带参数构造函数,必要时则需要定义不带参数版本以实例化无参对象...而且有时编译器会生成,有时又不生成,容易造成混乱,于是C++11让程序员可以控制是否需要编译器生成 显式缺省函数 C++11可以默认函数定义或者声明时加上=default,从而显式指示编译器生成该函数默认版本...98,是该函数设置成private,并且不给定义,这样只要其他人想要调用就会报错 C++11更简单,只需该函数声明加上=delete即可,该语法指示编译器不生成对应函数默认版本,称=delete

69260

c++11&14-编译

1. c++11&14怎么编译 学习c++11时候,我redhat虚拟机上g++才是4.1.2版本,而g++4.7版本才开始支持c++11,所以要使用c++11,首先需要将我们g++编译器升级到...注意:大意义上来讲,GCC是一个编译器集合,拿到源代码后编译出来各种编译器,如果我们选择编译c,c++编译器,就会生成gcc和g++。...这里gcc是专门正对于c代码编译器,g++则是专门针对于c++代码编译器,gcc和g++最显著区别是g++会调用-lstdc++库,gcc不会。...1.2 c++11编译 一般,我们要编译c++11,都要使用g++ -std=c++11,但据我测试,7.1.0版本已经默认支持c++11和c++14了,所以就不用再写明-std=c++11选项了...,可以直接使用g++编译c++11或者c++14代码啦,当然如果想知道某个特性到底是属于c++11还是c++14,就可以使用-std=c++11和-std=c++14来辨别。

42020
领券