第2章,基本概念

在ANSI C的任何一种实现中,存在两种不同的环境,翻译环境和执行环境。这两种环境不必位于同一台机器上,例如交叉编译器就实在一台机器上运行,但它所产生的可执行代码位于不同类型的机器上。

另外标准还定义 了独立环境,就是不存在操作系统的环境,嵌入式系统就属于这种独立环境。

翻译的过程:

两部分组成:编译和链接

编译:预处理器处理------->解析(判断语句的意思,这个是产生绝大多数错误和警告信息的地方)---------->产生目标代码----->优化器优化(可选项,优化需要时间,一般在调试完毕前是不会选择优化的

链接:一个程序的编译产生的各个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。链接器同时会引入标准C库或者程序员个人写的库(在手动配置好引入的时候 如:-lunp)。

文件名约定:

目标文件在UNIX中扩展名为.o  在MS-DOS系统中,扩展名为.obj

词法规则

字符:标准还定义了几个三字母词,三字母词就是3个字母合起来表示另一个字符,这些三字母词的特征是前两个都是??。所以在两个连续?出现的地方要注意,如果只是想表示两个?。要记得在第一个?前加转义符。

有些字符前面加了转义符还可以表示一些特殊的含义:

\a  \n   \ddd(八进制数字)   \xddd(十六进制数字)

转义符表示的八进制和十六进制数字都是有大小限制的,如上所示,最多三位。

标识符:大小写字母,数字和下划线组成,但不能以数字开头,大小敏感。虽说对长度没有限制,但标准允许编译器忽略第31个字符以后的字符。标准同时允许编译器对用于表示外部名字的标识符(诸如lunp)进行限制,只识别前6为不区分大小写的字符。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容