【问题标题】:C1x: When will it land, what to expect?C1x:它什么时候降落,会发生什么?
【发布时间】:2011-03-21 10:31:53
【问题描述】:

许多编译器仍然不支持 C99,现在的重点主要放在 C++ 及其即将推出的标准 C++1x 上。

我很好奇 C 将在其下一个标准中“获得”什么,何时获得,以及它将如何保持 C 的竞争力。众所周知,C 和 C++ 以相互改进为基础,C 会以 C++1x 标准为基础吗?

我对 C 的未来有什么期待?

【问题讨论】:

  • 是否有推动另一个 C 修订版?我能想到的任何人可能想要的 C 语言实际上都暗示他们应该转向更高级别的语言......
  • No C 仍然扮演着非常重要的角色。我对计划进行哪些更改以使其适用和保持最新感兴趣。我不认为提高水平是其中的一部分。
  • 比维基百科更详细的摘要会很好。草稿读起来很无聊。
  • 另外,如果知道那个静态数组中有多少东西,为什么编译器不能呢?我只是用小方括号告诉它!为什么我不能使用我刚刚声明的那个枚举的值的数量而不是添加一个虚拟结束值?我的意思是,这些都是小烦恼,但它们都是编译时可修复的特性,其修复不会对运行时产生影响。
  • 无论如何,我不想就此发起一场激烈的战争,我的观点是,可以调整语言而不需要使用“高级”语言进行必要的更改。

标签: c language-features c11


【解决方案1】:

查看当前状态的最佳位置可能是查看新版 C 标准的latest draft。警告:虽然它直接来自委员会,但该链接背后的服务器并不总是响应最快的......

【讨论】:

    【解决方案2】:

    我正在输入功能列表,但注意到 Wikipedia page on C1X 包含所有提议更改的完整列表。

    在 ISO C 工作组的website 上发布“会后”邮件。其中一个更有趣的是Editor's Report

    【讨论】:

    • 我很想听听比维基百科页面提供的更多细节。特别是关于新的字符类型。是否会有一整套函数来操作这些类型的字符串(ala strstr 等),或者只是用于来回转换为多字节字符串的函数?至于线程,唯一添加的是__thread 关键字吗?或者是否有一种新的可移植线程 API,它比 POSIX 线程更简单、更健全?
    • 最重要的是,我想知道 C1x 线程和 POSIX 线程如何交互。如果底层实现不能相同,那将是非常不幸的,通过将在一系列系统 (C1x) 上实现的简单 API 或仅在 POSIX 环境中可用的功能丰富的 API 访问。
    • 我认为它很可能是一个接口包装器,以及 pthread 的子集或精确副本。
    • 如果 C 的线程与已被广泛使用、记录和理解的 POSIX 线程截然不同,那么没有人会使用 C 线程。
    • 我听说 C1x 和 C++11 努力同步他们的线程模型和原子。 @R 他们添加了 _Atomic 关键字。
    【解决方案3】:

    这是来自维基百科页面的摘要:

    • 对齐规范(_Align 说明符,alignof 运算符,aligned_alloc 函数)
    • 多线程支持(_Thread_local 存储类说明符,<threads.h> 标头,包括线程创建/管理功能、互斥体、条件变量和特定于线程的存储功能)
    • 改进了 Unicode 支持(char16_tchar32_t 类型用于存储 UTF-16/UTF-32 编码数据,包括 <uchar.h> 中对应的 u 和 U 字符串文字前缀和转换函数)
    • 删除gets函数
    • 边界检查接口(附件 K)
    • 可分析性特征(附件 L)

    【讨论】:

    • 再见gets()
    • dreamlax:确实,我本来想在那个项目后面加上“yay!”,但觉得它可能不合时宜……
    • 在最新的草稿中,我们得到了_Generic! C++ 函数重载的手动版本。
    • @Joe D:类型泛型看起来很棒。
    【解决方案4】:

    我看起来像 4.6 的 gcc 是 starting 来查看 C1x。他们声称拥有:

    • 静态断言(_Static_assert 关键字)
    • Typedef 重新定义
    • 中的新宏
    • 匿名结构和联合

    【讨论】:

      【解决方案5】:

      ISO/IEC 9899:2011 standard,又名 C11,发布于 December 2011

      最新的草稿是N1570;我不知道它与最终标准之间有什么区别。已经有一个技术勘误修正了 __STDC_VERSION__(现为 201112L)和可选的 __STDC_LIB_EXT1__(现为 201112L)规范中的疏忽。

      【讨论】:

        猜你喜欢
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-13
        • 2017-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-06
        相关资源
        最近更新 更多