【问题标题】:Difference between GCC binary literals and C++14 ones?GCC 二进制文字和 C++14 的区别?
【发布时间】:2013-04-26 09:18:50
【问题描述】:

C++14 似乎即将到来,编译器已经在尝试实现这个新版本的核心特性。我正在查看GCC support for these core features 并注意到有关二进制文字部分的一些信息:GCC 实现了它们,但似乎在 GNU 二进制文字和 C++14 二进制文字之间有所不同。以下是两者各自的参考:

我试图找到它们两者之间的一些差异,因为 GCC 似乎有所作为,但找不到任何东西。你们有谁知道更多关于可能的不兼容性的信息吗?

【问题讨论】:

  • 第一个链接是 GCC 的 GCC 对 C 和 C++ 语言的现有扩展的文档。第二个链接是向标准 C++ 添加功能的提议。
  • 嗯,我知道这一点以及二进制文字是否被接受的状态。我只是问一下它们之间可能的用法差异。

标签: c++ gcc g++ literals c++14


【解决方案1】:

与在 gcc 4.9 中引入支持的 commit diff 相比,唯一的区别是 gcc 现在接受二进制文字作为 C++1y 的语言特性,并且如果 C+ 不警告它们是 gcc 扩展指定了 +1y 支持。实际实现没有变化。

以前:

warning : binary constants are a GCC extension

现在,除非指定 -std=c++1y

warning : binary constants are a C..1y feature or GCC extension

【讨论】:

    【解决方案2】:

    我猜测不同之处在于,一个是扩展,人们不会太倾向于使用它,而另一个是标准兼容且无需打开扩展即可访问。这是一种形式。

    【讨论】:

      【解决方案3】:

      您指向的第一个文档是二进制文字的 GNU 实现作为 C 语言的扩展(即,它是 C 的非标准功能,该文档定义了 gcc 如何实现语言的扩展)。

      您指向的第二个文档是向 C++11 语言添加二进制文字的提议,但据我所知,它也未被接受 (*),这意味着它也不是标准 C++ 的一部分,它仍然是 gcc 提供的语言扩展。

      据我所知,此功能不可跨编译器移植,但您可以使用用户定义的文字在 C++11 中定义自己的二进制文字实现。

      (*) s/不接受/我在 N3485“工作草案,C++ 编程语言标准”中找不到任何对二进制文字的引用,但它可能是下一个 C++ 标准接受的特性。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 2011-08-27
      • 2011-08-05
      • 2011-03-14
      • 2016-02-14
      相关资源
      最近更新 更多