C99 的语言新特性

QT非初次使用报错“ERROR 127”原因分析 QT非初次使用报错“ERROR 127” 阅读详情


 版权所有:云风   


云风吐血整理了下面这个 :) 可能还有极少漏掉的新特性.   
不过那一般是用处不大的东西   

1. 对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节   
变量名函数名什么的要求支持到 63 字节 ( extern 的要求支持到 31)   
2. 预处理增强了. 例如, 1.宏支持类似 ... 的东西   
#define Macro(...) __VA_ARGS__   
2. 使用宏的时候,参数如果不写. 而宏里用 #,## 这样的东西,   
会扩展成空串. (以前会出错的)   
3. 支持 // 行注释   
4~xx. 还有些我不太关心的扩展 ;)   
3. 增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool   
restrict 含义比较复杂, 不太能简单解释清楚. 好在大家应该   
都有耳闻是什么东西, 后面几个 _开头的类型关键字早就应该支持了 ;)   
因为防止以有的代码出问题, 所以只好 _ 开头了   
支持 long long, long double _Complex, float _Complex 这样的类型 :)   
4. 支持 <: :> <% %> %: %:%:, 等等奇怪的符号替代, D&E 里好象提过这个   
5. 支持了不定长的数组. 数组的长度就可以用变量了 :) 这个是我刚刚从   
basic 转到 C 时最想要的东西 :) 声明类型的时候呢,就用 int a[*]   
这样的写法. 不过考虑到效率和实现, 这玩意并不是一个新类型.   
所以就不能用在全局里, 或者 struct union 里面, 说白了, 就是帮你调用   
_alloca. 当然, 如果你用了这样的东西, goto 语句就受限制了.   
不能跳到所在的语句段里了.   
6. 变量声明可以放在任何地方, 而不必都放在语句段的开头.   
而 for 语句现在提倡这么写 for(int i=0;i<100;++i) 就是说, int i 
的声明放在里面, i 只在 for 里面有效. 
7. 当一个类似结构的东西需要临时构造的时候, 可以用 (type_name) 
{xx,xx,xx} 这有点像 C++ 的构造函数 嘿嘿 
8. 初始化结构的时候现在可以这样写: 
struct {int a[3], b;} hehe[] = { [0].a = {1}, [1].a = 2 }; 

struct {int a, b, c, d;} hehe = { .a = 1, .c = 3, 4, .b = 5} // 
3,4 是对 .c,.d 赋值的 

这个感觉超强啊 ^^ 我一直想要的东西, 为什么 C++ 没有呢 ;( 

9. 字符串里面, u 支持 unicode 的字符 :) 
10. 好象还支持什么 16 进制的浮点数的描述, 不过我很奇怪为什么不支持 2 
进制整数的描述 
11.因为现在支持 long long 了(规定至少是 64bit) , 所以 printf scanf 里就多出支持一个 ll / 
LL (VC6 里用的 I64) 
12. 浮点数的内部数据描述支持个什么新标准来着, 这个可以用 #pragma 什么的去指定 
13. 除了已经有的 __line__ __file__ 以外, 又支持了一个 __func__ 
,可以得到当前的函数名, 这个 gcc 好象早就有了 
14. 对于非常数的表达式,也允许编译器做化简 
15. 对于 / % 负数上的定义, 总算改成了我最希望的形式 
比如原来 -22 / 7 = -3, -22 % 7 = -1 
现在 -22 / 7 = -4, -22 % 7 = 6 
为了这个问题, 我以前老自己定义一个 DIV 和 MOD 宏或 inline 函数 ;( 
16. 那个不写函数返回类型, 默认就是 int 的规定取消了. 
再这么写就不通过了 
17. 以前我偏爱 C 的时候, struct 定义的最后一个数组的长度喜欢写 [0], 在 
C++ 里是通不过的. C99 这次把这种做法统一规定写 [] (既不写长度描述) 
18. 为了方便宏或者代码生成器, 如果你写 const const int i; 是不出错的, 
当成 const int i; 处理 
19. 增加和修改了一些标准头文件, 比如定义 bool 的 <stdbool.h>   
定义一些标准长度的 int 的 <inttypes.h>   
定义复数的 <complex.h>   
定义宽字符的 <wctype.h>   
有点泛型味道的数学函数 <tgmath.h>   
跟浮点数有关的 <fenv.h>   

<stdarg.h> 里多了一个 va_copy 可以复制 ... 的参数   
<time.h> 里多了个 struct tmx 对 struct tm 做了扩展   

输入输入对宽字符还有长整数什么的做了相应的支持   


欢迎补充写漏的东西 :)     

从AMCL到SLAM Toolbox:在Nav2中实现高精度纯定位的实践指南 本文详细介绍了从AMCL迁移到SLAM Toolbox纯定位模式的实践指南,帮助开发者在Nav2中实现高精度定位。通过对比AMCL与SLAM Toolbox的性能差异,提供环境配置、参数调优、Nav2集成等关键步骤,显著提升机器人在动态环境中的定位精度和重定位效率。 阅读详情

相关推荐

机器学习 线性回归 头歌实训

第1关:简单线性回归与多元线性回归 第2关:线性回归的正规方程解 第3关:衡量线性回归的性能指标 第4关:scikit-learn线性回归实践 - 波斯顿房价预测

weixin_57270536的博客 1万+

可变宏参数个数和可变函数参数个数

可变宏参数个数和可变函数参数个数

Clef的专栏 1972

《Halcon 100项目-9》Halcon彩色线序检查

Halcon彩色线序检查

doubleintfloat的博客 1042

c语言 宏 可变参数,可变参数宏【C语言】

C99开始允许宏有可变参数,用省略号表达一个到多个参数,用__VA_ARGS__来传递参数。如果要使用零个到多个参数,则应该用##__VA_ARGS__来传递参数。#include#include#define DEBUG(fmt, ...) fprintf (stderr, fmt, __VA_ARGS__)int process (int i1, int i2){int val;DEBUG ...

weixin_36280317的博客 539

别再到处搜了!高德地图瓦片URL参数(lang、style、ltype)全解析与实战搭配指南

本文全面解析高德地图瓦片URL参数(lang、style、ltype)的核心逻辑与实战应用,提供18种实用参数组合方案,帮助开发者实现从基础到高阶的定制化地图渲染。涵盖语言控制、地图样式、图层类型等关键参数,并分享WebGIS项目中的优化技巧与常见问题解决方案。

weixin_33724046的博客 117

dxf-viewer 查看器

dxf-viewer SDK 的示例,它是一个基于 Three.js 和 Vue3 构建的基于 WebGL 的 BIM 模型查看器。它用于查看 DWG/DXF/PDF 文件。面积测量 - 角度测量 -标记。

qq_25547755的博客 865

C99标准的新特性

对于苦苦研习C语言的人来说,乱七八糟的书籍不如一份儿直接的标准来的真切。打算最近找几个人翻译一下C99标准。(ISO/IEC 9899:1999)。完成之后将会给大家下载,希望能够支持。 在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C++继续在改进。(实际上,Normative Amendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)标准在9

muscle_cui的专栏 704

反无人机技术实战解析:从探测到拦截的全方位防御策略

本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。

weixin_29230649的博客 401

C语言基础语法复习04-c99新特性详解

C语言基础语法复习04-c99新特性详解

weixin_43172531的博客 660

Red Hat Enterprise Linux 9.2

安装Red Hat Enterprise Linux 9.2

zhurobert的博客 940

ABAP Cloud 里的高性能日志:CL_BALI_LOG、XCO_CP_BAL 与 AML 的性能对比与选型指南

ABAP日志框架性能对比与选型建议 本文对比了ABAP Cloud中三种主流日志框架的性能表现与适用场景: 标准BALI:适合明确需要保存日志的场景,保存路径短,性能较好 XCO_CP_BAL:API更现代但性能较低,适合需要即时可见性的场景 AML:开源框架,擅长消息缓冲,适合批量处理时暂存消息 测试结果表明: 纯记录不落库时AML最快 需要保存时BALI性能最优 second connection不提升性能但能确保日志留存 选型建议: 高频批处理优先AML+BALI组合 故障诊断考虑XCO的即时可见性

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 214

c语言如何设置c99标准,新的C语言: C99标准介绍

新的C语言: C99标准介绍Randy Meyers此篇文章摘取与即将登载于《Dr.Dobb's 软件研发》》第二期(2003年9月)的《新的C语言,C99标准介绍》,文章主要是介绍了C99的新特性,在得到作者Randy Meyers以及《Dr.Dobb's 软件研发》》负责人刘江先生的应允下,把全文的前面的一部分作为文档发表,希望能对大家有所帮助。译注2: C语言的产生源于失败的项目---Mul...

weixin_29495679的博客 2208

ABB变频器使用PROFINET IO通信模块时的激活方法

ABB变频器使用PROFINET IO通信模块时的激活方法

Robot_PLC_HMI_Automation 2732

c++基于c11的新特性以及与c99版本C语言的区别

大一新生,记录了自己在自学C ++时候的一些体会,可能会有不少错误,希望大家指出。第一章:预备知识 C ++简介:        c++融合了三种不同的编程方式:C语言代表的过程性语言,c++在C语言基础上添加的类代表的面向对象语言,c++模板支持的泛型编程。在c++中将会学习对象和类,以及如何实现他们。        C ++中的面向对象编程(OOP)强调的是数据,OOP不像过程性编程那样,试图...

Pedant_的博客 2119

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

深入解析:C语言的四套标准(C89、C99、C11、C17)

C语言的四套标准(C89、C99、C11和C17)代表了C语言的演进和改进过程。每个标准引入了新特性和改进,为程序员提供了更强大和灵活的编程工具。通过具体实例的说明,我们深入探讨了每个标准的特点和新特性,帮助你了解C语言的不同版本,并为你在实际编程中选择合适的标准提供了指导。

爱编程的鱼的博客 6070

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux C 编程一站式学习记录(二)- C99语言新特性

阅读 宋劲杉 老师的 Linux C 编程一站式学习 后总结 C99 引入的新特性。 声明跟语句顺序 C89 要求所有声明写在所有语句之前,而 C99 允许语句和声明按任意顺序排列,只要每个标识符遵循先声明后使用的原则就行。 初始化和赋值 复合类型 如下例子,C99 中 z1 必须是局部变量才能用另外一个变量 x 的值初始化,如果是全局变量就只能⽤常量表达式来初始化。C89 中不管局部变量还是全...

hgleagle的博客 388

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C语言标准演进史:从C89到C23,新特性如何影响你的代码?

C语言作为一门历史悠久且广泛应用的编程语言,自诞生以来经历了多次标准的演进。每一次标准的更新都带来了新的特性和改进,这些新特性不仅反映了编程语言发展的趋势,也对程序员编写代码的方式产生了深远的影响。本文将详细介绍C语言从C89到C23的标准演进历程,分析各版本引入的重要新特性,并探讨这些新特性如何影响我们的代码。

星辰夜语的博客 1249

c11是c语言的特性吗,c++基於c11的新特性以及與c99版本C語言的區別

大一新生,記錄了自己在自學C ++時候的一些體會,可能會有不少錯誤,希望大家指出。第一章:預備知識C ++簡介:c++融合了三種不同的編程方式:C語言代表的過程性語言,c++在C語言基礎上添加的類代表的面向對象語言,c++模板支持的泛型編程。在c++中將會學習對象和類,以及如何實現他們。C ++中的面向對象編程(OOP)強調的是數據,OOP不像過程性編程那樣,試圖使問題滿足語言的過程性方法,而是試...

weixin_35173650的博客 221

c 语言 标准类型,C 语言标准

K&R CK&R C 一般也称为传统 C。在 C 标准没有统一之前,C 语言的作者 Dennis Ritchie 和 Brian Kernighan 合作写了一本书《C 程序设计语言》。这本书很薄,内容精炼,主要介绍了 C 语言的基本使用方法。早期程序员编程,这本书可以说是绝对权威。ANSI C在 C 语言刚发布的早期,各大编译器厂商开发自己的编译器时,各自开发,各自维护。这就会造...

weixin_39687621的博客 236

C11 标准下的 C 语言编程

C11 标准 C语言编程

xkdlzy的专栏 3239

现代 C99, C11 标准下的 C 语言编程

原文链接:Elliot's Blog - 技术摘要| 现代 C99, C11 标准下的 C 语言编程。 现代 C99, C11 标准下的 C 语言编程 一、摘要 一直以来,我们所学习的 C 语言大多是 ANSI-C 标准,也就是后来被标准化的 C89 标准。在 1999 年发布的 C99 和 2011 年发布的 C11 标准在此之上,引入了许多新的特性,也解决了许多问题。因此,随着标准的发布,我们的 C 语言规范和写法也要发生相应的变化。 C++ 同样也发布了 C++99,C++11,C++14 甚

chinagaobo的专栏 2788

C语言44个关键字大全(附带详细解释)

经过了半个多世纪的发展,C语言有了多个标准或版本,比如 C89(ANSI C)、C99、C11 和 C11,C17,C23,笔者将根据不同标准列出 C语言的所有关键字,并附带简答的说明。

数据结构和算法教程(C语言版) 1547

【2024---C语言的版本迭代】

2024最新:C语言的版本迭代

weixin_53800025的博客 1744

C99到底是什么?

C99是ISO C标准的一个版本,它是C语言的第二个官方标准,第一个官方标准是C89(也称ANSI C)

2301_79978195的博客 3224

c语言标准

K&R C 1978年,丹尼斯·里奇(Dennis Ritchie)和Brian Kernighan合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程序设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色: 结构(struct)类型 长整数(long int)类型 无符号整数(unsigned int)类型 把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道用户要处理i = +10还是i =- 10,使得处理

marken 3165

ANSI C、C89、C99和C51的区别

ANSI C、C89、C99和C51的区别 什么是ANSI C、ISO C、C89、C90标准? 随着C语言使用得越来越广泛,出现了许多新问题,人们日益强烈地要求对C语言进行标准化。1983年,美国国家标准协会(ANSI)组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,这个版本的语言经常被称作ANSI C,或有时称为C89(为了区别C99)。在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会(ANSI)采纳为ISO/IEC 9899:19

weixin_46251230的博客 6600
上一篇: C89和C99标准比较 【编程爱好者论坛】
下一篇: 汉语,我想对你哭
DaNmarner
博客等级 码龄21年 27粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值