标签 博客 下的文章

走马观花ANSI C标准-环境

标准都是条条框框的,以严谨著称,语言晦涩难懂。这也是大多数人不愿意“接近”它的原因。但它吸引我的最重要原因恰恰是“标准”二字,我觉得我能从这个标准中找到一些“闪光点”,而这些“闪光点”又恰恰是能让我有所提高的地方。

1、翻译环境
C Source文件是以文本形式存在的,将之转变成可执行程序的过程,我们管之叫“翻译”。C语言的翻译不是一蹴而就的,一般需要两遍才能达到目的,第一遍称为“预处理”,预处理的基本单位是“预处理翻译单元”。第二遍叫“编译”,编译的基本单位是“翻译单元”

a)何为“预处理翻译单元”?
其实很多人之前对这个的理解都很模糊,标准中是如是说的“一个预处理翻译单元是由一个Source file和该Source file通过#include指示符包含的Header files和Source files组成的”,不妨多看几次这个说明,标准就是标准,理解起来还真有些费事^_^。注:#include "xx.c"是没有错误的,只是不常用。

b)“预处理翻译单元”和“翻译单元”之间的关系
预处理后的“预处理翻译单元”叫“翻译单元”。

c)“翻译单元”之间的关系
首先翻译单元相互独立编译;
其次一个完整的可执行程序是由众多翻译单元链接而成的;
最后翻译单元之间是“external linkage(外部链接)”的关系。

2、执行环境
经过复杂的翻译后,现在我们拥有了可以执行的程序了。我们要关心的就是我们的“执行环境”了。执行环境分为两类:“独立的”和“宿主的”。都很好理解。前者在实现时没占一点操作系统的便宜。后者则恰恰相反,利用了很多操作系统的特性和现成的东东。

我们所使用的执行环境多为后者。启动函数(Startup function)一般为main,main有两种原型形式:
int main(void);
int main(int argc, char *argv[]);
当然对第二个main的参数有些限制。如argc >= 0等。

3、其他考虑
a)字符集
源文件字符集:用于书写源文件的字符集。
执行字符集:在执行环境中被解释的字符集。
基础字符集:包括26个小写拉丁字母、26个大写拉丁字母、数字0~9等,这些字符的值都能用8位bit(即一个字节)编码表示。我的理解如ASCII字符集
扩展字符集:一些非基础字符集的区域相关(locale-specific)的字符。我的理解如Unicode字符集
null字符:一个所有位都为0的byte被称为null字符,用于标识字符串结尾。

4、环境限制
没有绝对的自由,无论是“翻译环境”还是“执行环境”都有一定的限制。
这里不想列举那么多的数字。
那我们该怎么得到这些限制呢?这里有几个头文件:
:int相关长度限制
:浮点数相关限制
:额外的一些关于int的限制。

寝室晨起混乱用语

来学习一些地道的日常美语吧。

一清早起来,Alex洗漱完毕,发现Tony仍不见清醒,就大声说:
"Tony! We gotta go! It's burning down!"

Tony正在做着美梦,被吵醒,心里自然很烦,遂说:
"Don't bother me!"

如果这时Tony只是贪睡,则可能会这样说:
Tony : Please give me five more minutes!

Tony从梦中醒来,发现时间所剩无几,遂快速跑到bathroom,却发现有一哥们正在里面,Tony不无好气的叫喊道:
"Don't hog the bathroom/shower!"

清晨起来,你不妨试试^_^

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats