ISO C99中的一些扩展(草稿)
一、指定数组初始化
int arry[6] = { [4] = 29, [2] = 15 }; //指定arry[4]=29, arry[2]=15 ,其他的为0
等价于
int arry[6] = { 0, 0, 15, 0, 29, 0 };
类似于注定结构体初始化
二、空结构体,C89标准的结构体不支持空结构体的。。
struct empty {
};
三、C++一样的注释符号 //
四、支持inline类联函数
static inline int
inc (int *a)
{
return (*a)++;
}
__inline__ 在一个头文件中使用 __inline__ 声明inline函数,因为ISO C90没有inline,这个时候就会被解释成空,忽略掉他。。。
五、声明时使用变量初始化
foo (float f, float g)
{
float beat_freqs[2] = { f-g, f+g };
/* ... */
}
六、标识符允许添加美元符号
七、老式的函数定义不在支持
/* Old-style function definition. */
int
isroot (x) /* ??? lossage here ??? */
uid_t x;
{
return x == 0;
}
八、case语句的范围caselow ...high:
像 case 'A'...'Z':
case 1...5:
九、多了一个转义字符 '\e' ,表示 <ESC>
十、类型转换可以转成union类型
union foo { int i; double d; };
int x;
double y;
union foo u;
/* ... */
u = (union foo) x == u.i = x
u = (union foo) y == u.d = y
十一、变量、函数和类型可以添加属性 __attribute__
十二、数组可以用restrict修饰, 想 arry_name[restrict]
十三、支持复数运算
十四、支持嵌套函数(Nested Functions)
foo (double a, double b)
{
double square (double z) { return z * z; }
return square (a) + square (b);
}
十五、修改了条件运算符
原先的是:
x?x:y;
C99可以写成:
x ? : y;
十六、标签即变量
static void *array[] = { &&foo, &&bar, &&hack };
goto *array[i];
十七、支持变参宏
#define ENABLE_DEBUG 1 //else, comment this line
#ifdef ENABLE_DEBUG
#define DEBUG_LOG(fmt,...) fprintf(stderr, "%s:%d: " fmt "\n", \
__func__, __LINE__, ## __VA_ARGS__)
#else
#define DEBUG_LOG(fmt, ...) do {} while (0)
#endif
等等。。。。。。。。。。。。。。
ISO C99中的一些扩展(草稿)相关推荐
- MySQL中的空间扩展
目录 19.1. 前言19.2. OpenGIS几何模型 19.2.1. Geometry类的层次19.2.2. 类Geometry19.2.3. 类Point19.2.4. 类Curve19.2.5 ...
- C语言:C99中的bool量
在C99标准之前,只能自定义bool量,常见的方式就是定义宏和枚举,例如: ① 枚举法 typedef enum bool = { False, Ture } ② 定义宏 typedef int BO ...
- PyTorch中的C++扩展
今天要聊聊用 PyTorch 进行 C++ 扩展. 在正式开始前,我们需要了解 PyTorch 如何自定义module.这其中,最常见的就是在 python 中继承torch.nn.Module,用 ...
- 基类和派生类写在一个文件中_BootISO:从 ISO 文件中创建一个可启动的 USB 设备...
今天,我们将讨论名为 BootISO 的实用程序类似工具.它是一个简单的 bash 脚本,允许用户来从 ISO 文件中创建一个可启动的 USB 设备. -- Prakash Subramanian(作 ...
- BootISO:从 ISO 文件中创建一个可启动的 USB 设备
为了安装操作系统,我们中的大多数人(包括我)经常从 ISO 文件中创建一个可启动的 USB 设备.为达到这个目的,在 Linux 中有很多自由可用的应用程序.甚至在过去我们写了几篇介绍这种实用程序的文 ...
- Flask框架(flask-script扩展命令行和flask中数据库migrate扩展的使用)
flask-script扩展命令行 1. 安装 : pip install Flask-Script 2. 在程序中 from flask_script import Manager '' ...
- 如何在php7.2/php7.3中安装mcrypt扩展?
mcrypt 是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启.window环境下,PHP>=5.3,默认开启mcrypt扩展.mcrypt扩展是mcrypt加密库的接口 ...
- dd命令iso linux_BootISO:从 ISO 文件中创建一个可启动的 USB 设备
今天,我们将讨论名为 BootISO 的实用程序类似工具.它是一个简单的 bash 脚本,允许用户来从 ISO 文件中创建一个可启动的 USB 设备. -- Prakash Subramanian(作 ...
- centos 打开pdo_mysql_centos中添加php扩展pdo_mysql步骤
pdo_mysql是php中一个mysql连接类了,我们可以直接使用pdo_mysql来操作数据库这样自己可以不需要写数据库操作类了,下面来介绍在centos中安装pdo_mysql扩展的步骤. 本文 ...
最新文章
- 在DWR中实现直接获取一个JAVA类的返回值的两种方法
- Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
- 西瓜书学习记录-决策树(第四章)
- 基于windows平台的命令行软件安装工具Chocolatey的安装
- python安装界面翻译_python环境搭建
- AWK高级编程 转载
- [转]Aptana Studio 3配置Python开发环境图文教程
- 大数据架构师学习方向---加油。
- 大学计算机vfp最新考试题库,大学计算机vfp考试选择题题库.doc
- [RESTful web services读书笔记] 接口设计中维持XML和JSON表述的兼容性
- C语言课程设计:学生管理系统
- 小程序保存图片相册无响应
- 展视互动签约新华网 创在线教育新蓝图
- 从期货开户公司分享交易所手续费返还
- 【PTA】斐波那契数列第n项
- hdf5-java_Java HDF5LibraryException類代碼示例
- SpringBoot整合Flowable工作流引擎框架
- db2 reorg的四个阶段
- 怎么让照片变年轻_如何用ps把人变年轻水嫩
- 我对于互联网发展的看法和一些理解
热门文章
- java 日期及别的小技巧
- pcie ep 应该支持哪种interrupt_7寸国产笔记本评测,酷睿处理器+8G+256G,还支持手写笔...
- 服务器开机提示修复,电脑开机提示自动修复怎么办?win10电脑开机提示自动修复教程...
- java保持运行_保持Java程序无限运行的方法是有效的吗?
- linux树莓派网易云音乐,基于树莓派的红外遥控版网易云音乐播放器
- python中tensorflow的函数简单用法(未完)
- B. Bogosort codeforces(思维)
- 八种基本排序方式(插入排序,希尔排序,选择排序,冒泡排序,快速排序,堆排序,归并排序,基数排序)代码模板以及时间复杂度
- 统计csv词频_基于给定词语列表统计词频
- Ubuntu16.04编译RK3399:make kernel.img error