首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C11的最新变化

C11的最新变化
EN

Stack Overflow用户
提问于 2011-12-26 03:44:34
回答 3查看 5.4K关注 0票数 35

C1x已成为ISO/IEC9899:2011,又名C11。

有没有人知道April 2011 draft n1570标准有什么变化(如果有变化的话

埃塔:有来自伦敦(2011年3月)(应包括在n1570中) here的委员会会议记录,以及来自华盛顿特区(2011年10月)here的会议记录;我认为DC会议记录中已接受的更改清单应该涵盖了这些内容。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-01 12:04:57

我今天刚刚了解到,在N1570和最终的C11标准(ISO/IEC9899:2011 (E))之间有一个(有点)重大的变化。

在N1570中,6.3.2p3说:

除非它是sizeof运算符、_Alignof运算符或一元数组运算符的操作数,或者是用于初始化数组的字符串文字,否则类型为“& of type”的表达式将转换为类型为"pointer to type“的表达式,该表达式指向数组对象的初始元素,而不是左值。

包含_Alignof是一个错误,因为一元表达式的语法允许

代码语言:javascript
复制
_Alignof ( type-name )

但不是

代码语言:javascript
复制
_Alignof unary-expression

发布的C11标准更正了此错误,并恢复为C99的措辞:

除非它是sizeof运算符的操作数、一元&运算符,或者是用于初始化数组的字符串文字,否则类型为“数组类型”的表达式将转换为类型为“指向类型的指针”的表达式,该表达式指向数组对象的初始元素,而不是左值。

更多信息:在最近发布给comp.std.c的一篇关于N1570和发布的标准之间差异的帖子中,ISO C委员会的成员Larry Jones写道:

有一些,但大多数只是编辑上的细微调整,对样板文本的更改,以及为了让权力满意而进行的洗牌。最大的变化是从一堆不应该添加的地方删除了_Alignof (基于一个错误的概念,即它要么接受类型,要么接受像sizeof这样的表达式,当它实际上只接受类型时):6.3.2.1p2,p3,p4,fn。65;和6.7.1 fn.121。

消息ID:<rfg33a-u0q.ln1@jones.homeip.net>

这是在groups.google.com上看到的the thread

票数 15
EN

Stack Overflow用户

发布于 2012-01-07 01:16:43

Jens Gustedt在评论中回答:

根据Larry Jones在comp.std.c上的评论,N1569没有显着变化(这是没有变化标记的N1570 )。唯一没有解决的问题是__STDC_VERSION__的值,但我想最自然的就是201112L

票数 5
EN

Stack Overflow用户

发布于 2012-01-07 08:20:05

国际标准化组织已经批准并发布了新的C编程语言C11 (C1x)标准ISO /IEC9899:2011。与C11 Wikipedia article中编写的先前标准(C99)相比,主要更改如下:

该标准包括对C99语言和库规范的几处更改,例如:

代码对齐规范(_Alignas说明符、_Alignof运算符、aligned_alloc函数、<stdalign.h>头文件)使用<>d14>关键字对_Noreturn函数代码表达式进行编码。例如,下面的宏cbrt(x)根据x的类型转换为cbrtl(x)cbrt(x)cbrtf(x)

#define cbrt(X) _Generic((X),long double: cbrtl,\ default: cbrt,\ float: float支持(_Thread_local存储类说明符,包括线程创建/管理函数的<threads.h>报头,互斥锁,条件变量和线程特定的存储功能,以及用于基于C Unicode技术报告ISO/IEC 19769:2004UTF-16/ access).

  • Improved -32编码数据的不间断对象literals).

  • Removal Unicode支持的_Atomic类型限定符和<stdatomic.h> (用于存储UTF-16/UTF-32编码数据的char16_tchar32_t类型,包括<uchar.h>中的转换函数和相应的uU字符串文字前缀,以及用于gets函数的UTF-8编码UTF-8编码UTF-8的UTF-8前缀的gets函数,ISO/IEC9899:1999/Cor.3:2007(E),支持一种新的安全替代方案,gets_s.

  • Bounds-checking接口(附录K).

  • Analyzability特性(附录L)。有关不正常的浮点数和小数位数的更多用于查询浮点类型的特征的宏,该类型能够store.

  • Anonymous结构和联合,当联合和结构嵌套时非常有用,例如在struct T { int tag; union { float x; int n; }; };.

  • Static断言中,

  • 更多宏当类型被translator.

  • An的#if独占创建和打开模式("…x"后缀)所理解时,将在比#if#error更晚的阶段在转换期间对其进行评估。它的行为类似于POSIX中的O_CREAT|O_EXCL,通常用于锁文件。

  • quick_exit函数作为终止程序的第三种方法,用于在使用exit real + imaginary*I终止程序以构造复数值时至少执行最小的反初始化(部分原因是,如果imaginary为infinite或NaN,则real + imaginary*I可能不会产生预期值)。

你可以从ISO网站上买到full published standard。以下是ISO网站的摘要:

ISO/IEC9899:2011规定了用C编程语言编写的程序的格式并建立了解释。它指定了

C programs;

  • the语法和C language;

  • the语义规则的约束的表示形式,用于解释C programs;

  • the要由C programs;

  • the处理的输入数据的表示形式由C programs;

  • the产生的输出数据的表示以及由C
  • 的一致性实现施加的限制。

ISO/IEC 9899:2011未规定

  • :转换C程序以供数据处理系统使用的机制;
  • ,调用C程序以供数据处理系统使用的机制;
  • ,转换输入数据以供C程序使用的机制;
  • ,输出数据由C程序产生后进行转换的机制;
  • 程序及其数据的大小或复杂性,超出任何特定数据处理系统或特定处理器的能力;
  • 能够支持一致性实现的数据处理系统的所有最低要求。ISO/IEC 9899:2011旨在促进C程序在各种数据处理系统之间的可移植性。它旨在供实现者和programmers.

使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8631228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档