g++ 版本 4.0.0.8 和 4.3.2 之间有什么区别?

2024-03-20

g++ 4.0.0.8 和 g++ 4.3.2 有什么区别?这两个是我在各种编程竞赛中见过的最常用的 C++ 编译器。

我尝试用谷歌搜索,但一无所获。


考虑到您对两者之间的 C++ 变化感兴趣,这实际上并不是一个“巨大的列表”。

4.0.0.8 只是 4.0 的补丁版本,其发行说明如下:http://gcc.gnu.org/gcc-4.0/changes.html http://gcc.gnu.org/gcc-4.0/changes.html

4.3.2 是 4.3 的补丁版本,其发行说明如下:http://gcc.gnu.org/gcc-4.3/changes.html http://gcc.gnu.org/gcc-4.3/changes.html

如果您查看它们之间的差异,我认为以下列表涵盖了您真正关心的 GCC 4.0 和 4.3 之间最重要的差异。

GCC 4.3.2 有(包括来自GCC 4.1 http://gcc.gnu.org/gcc-4.1/changes.html and GCC 4.2 http://gcc.gnu.org/gcc-4.2/changes.html):

对 ISO C++0x 标准的实验支持 http://gcc.gnu.org/gcc-4.3/cxx0x_status.html(这是一个链接)

  • long long现在在 C++ 中得到正式支持(尽管它是旧版 GCC 中提供的扩展)
  • 模板extern支持
  • 像您在中看到的那样的直角括号std::vector<std::vector<int>>现在支持(注意两者之间缺少空格)>在声明的最后)。
  • 对可变参数模板参数的实验支持 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
  • 静态断言 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
  • 和其他一些

更多 TR1 库支持

  • <regex>(海湾合作委员会4.3),<random>(海湾合作委员会4.2),以及<complex>(海湾合作委员会4.2)

C++ 可见性处理已被彻底修改。 (海湾合作委员会4.2)

受限可见性从类传播到成员,从函数传播到局部静态变量,从模板和模板参数传播到实例化,除非后者已显式声明可见性。

类的可见性属性必须位于类键和名称之间,而不是在右大括号之后。

现在允许仅声明类型的枚举和详细类型说明符使用属性。

匿名名称空间的成员现在对于特定翻译单元以及使用它们的任何其他声明来说都是本地的,尽管它们仍然被视为具有语言语义的外部链接。

GCC 4.2 中删除了未记录的模板扩展(在 4.1 中已弃用)

允许将具有默认参数的模板绑定到具有较少参数的模板模板参数的(未记录的)扩展已被删除。例如:

template <template <typename> class C>
void f(C<double>) {}

template <typename T, typename U = int>
struct S {};

template void f(S<double>);   

G++ 不再接受。这段代码不被接受的原因是S是一个有两个参数的模板;因此,它不能绑定到只有一个参数的 C。


此外,请检查移植到 GCC 4.3 指南 http://gcc.gnu.org/gcc-4.3/porting_to.html,其中一些重要的内容,例如:

向后兼容/已弃用的标头已被删除。

大多数情况下,这意味着一堆预标准标头已被删除,例如<iostream.h>(使用标准<iostream>), <hash_map.h> (use <tr1/unordered_map>) <hashtable.h> (use <tr1/unordered_map> or <tr1/unordered_set>取决于需要)等。同样,这没什么大不了的。

更严格执行标准

例如,签名main的两个参数形式必须是正确的。

函数参数名称不能重复

void func(int x, int x); // now an error

并且有各种错误修复,以及我认为不会真正影响您编写竞赛代码的方式的更改(例如删除/添加新的编译器标志),以及删除诸如<? and >?运算符(曾经使用过那些吗?)。

总而言之,如果您必须为两个编译器编写代码,我认为两者之间的差异不会给您带来太多痛苦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

g++ 版本 4.0.0.8 和 4.3.2 之间有什么区别? 的相关文章

  • Postsharp 不登录跟踪级别

    我喜欢在跟踪级别记录一些 Postsharp 消息 不幸的是 日志到这个级别没有打印任何输出 所有其他级别都在工作 与控制台或 NLog 后端或从其他类登录时的行为相同 如何启用跟踪级别 应用程序 xaml cs Log Attribute
  • C++:字符串流有什么好处?

    谁能告诉我一些在 C 中使用字符串流的实际例子 即使用流插入和流提取运算符输入和输出到字符串流 您可以使用字符串流来转换任何实现operator lt lt 到一个字符串 include
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • 为什么 fgets 接受 int 而不是 size_t?

    功能如strcpy malloc strlen 和其他各种接受他们的参数或返回值作为size t代替int or an unsigned int出于显而易见的原因 一些文件功能 例如fread and fwrite use size t以及
  • C 中的 '\0' 和 printf()

    在 C 入门课程中 我了解到在存储字符串时存储空字符 0在它的最后 但是如果我想打印一个字符串怎么办 printf hello 虽然我发现它并没有结束 0通过以下声明 printf d printf hello Output 5 但这似乎不
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 如何生成可变参数包?

    给定不相关的输入是否可以生成非类型参数包 我的意思是 我想改变这一点 template
  • 可以通过模板间接访问基类中的私有类型

    我试图在编译时根据类型是否在给定范围内公开可用来选择要使用的类型 最好直接看代码 include
  • _MM_TRANSPOSE4_PS 在 GCC 中导致编译器错误?

    我第一次在 GCC 而不是 MSVC 中编译我的数学库 并经历了所有的小错误 我遇到了一个根本没有意义的错误 Line 284 error lvalue required as left operand of assignment 284号
  • 是否自初始化 'A a = a;'允许吗?

    此代码在运行时在复制构造函数中失败 但编译器 MSVS2008 没有发出警告 您能解释一下 最好引用标准 这段代码是否非法或什么 我理解 A a a 永远不应该写在第一位 但我正在寻找理论背景 class A public A p new
  • 使用左连接获得不适当的输出

    我正在尝试获取变体列表 并且对于每个变体都获取所有subvariants list无论子变体属于何处 特别的Test say 100 这是示例数据 Id TestId SourceSubVariantId TargetSubVariantI
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • WCF 服务中的缓冲区大小

    我们有一个 WCF 服务 它执行某些存储过程并将结果返回给 silverlight 客户端 某些存储过程最多返回 80K 行 下面给出的是 web config 中服务的设置
  • 链接到ntdll.lib并调用ntdll.dll内部的函数

    我最近正在对私有 API 进行一些研究 我尝试调用诸如NtOpenFile在 ntdll dll 中LoadLibrary and GetProcAddress在运行时 幸运的是 它成功了 今天早上我在电脑上进行了文件搜索 发现ntdll
  • 在链表程序中使用模板时重载 C++ 中的 << 运算符

    我正在尝试实现一个链接列表 但是当我尝试重载 include
  • Membership.ValidateUser() 的目的是什么

    我一直在学习有关MembershipProvider类 我认为Membership ValidateUser 方法应该用于登录用户 然而我刚刚了解到有一个FormsAuthentication Authenticate 目的是什么Valid
  • SMTP 客户端在 C# 应用程序中显示错误“未采取请求的操作”

    我正在尝试使用 hotmail 帐户设置电子邮件发送应用程序 代码如下所示 MailMessage mail new MailMessage from to mail Subject Proba email mail Attachments
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720

随机推荐

  • “ReverseManyToOneDescriptor”对象没有属性“最新”

    我在尝试运行函数时收到此错误 这是我的第一个 django python 项目 所以我对此没有经验 我已经搜索过此错误 但没有找到类似的内容 def getpriority chunks p 0 for chunk in chunks a
  • 您可以使用重载的 bool() 来评估对 boolean 的构造函数调用吗?

    如果 bool 运算符重载 构造函数调用是否可以计算为布尔值 class A public A operator bool const return true main if A a A do stuff 上面的代码是否有效 或者我是否需要
  • 这个 Horizo​​ntalScrollView 布局或其 LinearLayout 父级是无用的

    我是 android 编程新手 我对水平滚动视图有问题 我遇到错误 此 Horizo ntalScrollView 布局或其 LinearLayout 父级无用
  • C# HttpClient 是否支持socks4/5 代理?

    我可以使用以下代码设置http代理 public class CustomFlurlHttpClient DefaultHttpClientFactory public override HttpClient CreateClient Ur
  • Python 相当于 R 的 cluster 包中的 daisy()

    我有一个数据集 其中包含分类 名义和序数 和数字属性 我想使用这些混合属性来计算我的观察结果的 不 相似度矩阵 使用daisy http stat ethz ch R manual R patched library cluster htm
  • 方法的通用接口重载?

    有没有一种好的 通用的方法来执行以下操作 而无需诉诸第二种方法或大量强制转换 我希望 API 尽可能轻量 并且在 OO 方面对我来说似乎没问题 class Foo public T Bar
  • 无法将(无类型字符串常量)转换为*字符串[重复]

    这个问题在这里已经有答案了 persistentvolumeclaim apiv1 PersistentVolumeClaim ObjectMeta metav1 ObjectMeta Name mysql pv claim Spec ap
  • 如何在 Django 中覆盖外部应用程序模板?

    我尝试覆盖django recaptcha模板没有任何运气 我究竟做错了什么 我知道在 Django 中覆盖外部应用程序的模板 https stackoverflow com questions 17918839 override temp
  • 如何解决平板电脑中的以下冲突?

    我为手机和平板电脑开发了一个 Android 应用程序 它已在两个模拟器中运行 当我在平板电脑模拟器中运行时 小部件的大小会填满屏幕 我应该怎么做才能解决这个冲突 您可以为手柄和平板电脑制作两种不同的布局res layout 用于手柄 和r
  • 从 CSV 文件读取的数据框中删除级别 - R

    我尝试加载棒球统计数据this http baseballguru com MLB2011 xls关联 当我使用从文件中读取它时 data lt read csv MLB2011 csv 它似乎将所有字段读取为因子值 我尝试通过执行以下操作
  • Str_Detect 使用跨列检测多列

    我想根据以下结果创建一个新专栏str detect跨多列使用across 例如 在下面的测试数据中 我想在以 job 开头的列中搜索 No job 如果在任何列中检测到该字符串 则返回 1 如果未检测到 则返回 0 test data lt
  • 使用 Keras 预测进行 Python 多处理

    Context Keras 模型 链接在这里 https drive google com file d 1f0WGCv11uObPziySE2wl6hXYKfyjqXBQ view usp sharing 为了 MWE 需要并行预测大量测
  • 像调用break一样短路Array.forEach

    1 2 3 forEach function el if el 1 break 我怎样才能使用新的来做到这一点forEachJavaScript 中的方法 我试过了return return false and break break崩溃和
  • 2020 年如何在 Windows 版 Git 中永久使用“LF”行结尾?

    我们的存储库使用LF 我的 Git for Windows 安装使用按原样签出 提交 Unix 风格的行结尾 但我在 IDE 中签出的每个文件中仍然出现错误 因为它仍然收到CRLF一直以来 即使它确实支持LF并配置为使用LF通过签到 edi
  • 使用 shell 脚本将人类可读的时间转换为 EPOCH

    我有一个人类可读的时间 08 18 2016 09 18 25 我希望使用 shell 脚本将其转换为纪元时间 我尝试过date s 但我收到错误 日期 无效日期 08 18 2016 09 32 42 将日期时间转换为纪元的规范方法是使用
  • Android Studio 2.3 更新后,Android 应用程序未在模拟器中加载

    我刚刚将 Android Studio 版本上传到 2 3 现在在模拟器中测试我的应用程序时遇到问题 它是一个 Nexus 5X 模拟器 上面加载了 Android 7 0 Nougat API 24 ABI armeabi v7a 我有一
  • Android 中的对象 XML 映射

    我正在开发一个基于客户端 服务器模型的应用程序 其中客户端在 Android 中 服务器在 PHP 中 我想将产品信息 例如名称 价格 说明 从客户端传输到服务器 我已读过编组 解组或序列化它可以实现 但所有教程和示例都是用 Java 编写
  • 业务逻辑层

    我正在使用 ASP NET 和 Telerik 控件 v2009 q2 来编程数据驱动的应用程序 我有一个名为 BLL 的类 它包含 几乎仅 静态类 这些类返回不同的对象 并以一些 id 作为参数 通常以列表形式返回对象组 我的问题是 总是
  • 两个日期范围之间有多少相等的天数,SQL

    我有包含日期 范围的表格 如下所示 DATE DATE2 14 03 2013 17 03 2013 13 04 2013 02 05 2013 我必须创建一个过程 返回等于两个日期范围的天数 一个在表中 另一个在表中 例如 我在表中的日期
  • g++ 版本 4.0.0.8 和 4.3.2 之间有什么区别?

    g 4 0 0 8 和 g 4 3 2 有什么区别 这两个是我在各种编程竞赛中见过的最常用的 C 编译器 我尝试用谷歌搜索 但一无所获 考虑到您对两者之间的 C 变化感兴趣 这实际上并不是一个 巨大的列表 4 0 0 8 只是 4 0 的补