当前位置:网站首页>C专家编程 第1章 C:穿越时空的迷雾 1.8 ANSI C标准的结构
C专家编程 第1章 C:穿越时空的迷雾 1.8 ANSI C标准的结构
2022-08-03 16:09:00 【weixin_客子光阴】
/usr/group是一个于1984年成立的UNIX国际用户小组。1989年,它更名为UniForum, 现在是一个非盈利行业协会,其宗旨是完善UNIX操作系统。
Uniforum从行为的角度对UNIX进行了成功的定义,这激励了许多有创造性的想法,包括:X/Open的可移植性指导方针(第4版,XPG/4出现于1992年12月)、
IEEE的POSIX 1003、
System V Interface Definition(系统5接口定义)、
ANSI C标准函数库。
软件信条
标准设立后轻易不作变动,即使是修改错误
K&R C 和 ANSI C之间的区别
1.第一类区别是指一些新的,非常不同并且很重要的东西。唯一属于这类区别的特性是原型---把形参的类型作为函数声明的一部分。原型使得编译器很容易根据函数的定义来检查函数的用法。
2.第二类区别是一些新的关键字。ANSI C正式添加了一些关键字:enum代表枚举;const,volatile,signed,void。
3.第三类区别被称为“安静的改变”---原先的某些语言特性仍然合法,但意思有了一些轻微的改变。有一条新规则,就是相邻的字符串字面值会被自动连接在一起。
4.最后一类区别就是除了上面3类之外的所有区别,包括哪些在语言的标准化过程中长期争论的东西。这些区别在现实生活几乎不可能碰到,如符号粘贴和三字母词(trigraph)。
ANSI C中最重要的新特性就是“原型”,这种特性取自C++。原型是函数声明的扩展,这样不仅函数名和返回类型已知,而且所有的形参类型也是已知的。这就允许编译器在参数的使用和声明之间检查一致性。它应该称作“函数签名”(function signiture),或者像Ada那样称作“函数说明”(function specification)。
软件信条
函数签名(function signiture)
函数说明(function specification)
原型的目的是当我们对函数做前向声明(forward declaration)
编译器因此能够在编译时刻对函数调用中的实参和函数声明中的形参
进行一致性检查。在K&R C中这种检查被推迟到链接时,或者干脆不检查。
//原先的声明
char *strcpy();
//现在的声明
char *strcpy(char *dst, const char *src);
可以省略参数名称,只保留参数类型
char *strcpy(char *, const char *);
最好不要省略参数名称。尽管编译器并不理睬形参的名称,但它们经常能向程序员传递一些有用的信息。
//原先的函数定义
char *strcpy(dst, src) char *dst, *src;
{
...
}
//现在的函数定义
char *strcpy(char *dst, const char *src) //注意没有分号
{
...
}
/*每次编写新函数都应该使用原型,并确保每次调用时都可见
*不要使用K&R C老式的函数声明方法,除非需要使用缺省的类型升级
*/
边栏推荐
猜你喜欢
随机推荐
uniapp的webview滑动缩放
使用VS Code搭建ESP-IDF环境
ReentrantReadWriteLock详解
C语言04、操作符
使用Make/CMake编译ARM裸机程序(基于HT32F52352 Cortex-M0+)
《安富莱嵌入式周报》第276期:2022.07.25--2022.07.31
AI也有健忘症?英国41岁教授专访:解决灾难性遗忘
用友YonSuite与旺店通数据集成对接-技术篇2
Why do I strongly recommend using smart async?
甲方不让用开源【监控软件】?大不了我自己写一个
一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
Yuan xiaolin: Volvo focus on travel security, and put it perfectly
13 and OOM simulation
Introduction to the advantages of the new generation mesh network protocol T-Mesh wireless communication technology
83. Remove Duplicates from Sorted List
smp,numa和mpp体系结构总结
ffplay视频播放原理分析
Spark entry learning-2
Detailed explanation of ReentrantReadWriteLock
攻防世界----bug