符号之来龙去脉
来源:互联网 发布:淘宝联盟网站推广位 编辑:程序博客网 时间:2024/05/06 20:58
1.符号修饰与函数签名诞生的背景和条件:
20世纪70年代,编译器编译源代码产生目标文件时,符号与相应的变量和函数的名字是一样的.后来Unix平台和C语言
发明时,已经存在了相当多的使用汇编编写的库和目标文件.这样问题就产生了,一个C程序要使用这些库的话,C语言
中不可以使用这些库中定义的函数和变量的名字作为符号名,否则将会跟现有的目标文件冲突.
为了防止类似的符号名冲突,Unix下的C语言就规定,C语言源代码中的所有全局变量和函数经过编译后,相对应的符号名
前加上下划线"_".而Fortran语言的源代码经过编译以后,所有的符号前后都加上"_".
这种简单而原始的方法的确能够暂时减少多种语言目标文件之间的符号冲突的概率,但是没有从根本上去解决符号冲突的问题.
a. 对不同语言源代码编译后生成的目标文件中添加上不同的符号约束,但是同一种语言的符号冲突问题还是没有解决.
b. 由于模块是协同开发的原因,导致出现的符号冲突概率更大. 如果想要减少冲突,那么就要制定相当复杂和繁琐的编码规范.
修饰和函数签名.至于其中的相关细节,我想这些没必要讨论,其原理是很简单的:
使用名称修饰和函数签名就是为了使避免产生符号冲突.使用一定的机制使源代码中的符号在生成的目标文件中能够保持
0 0
- 符号之来龙去脉
- KMP算法之来龙去脉
- 【原创】MFC程序设计之来龙去脉
- android事件机制之来龙去脉
- 详解ORACLE ROWID之来龙去脉
- Android输入输出机制之来龙去脉
- AppFramework通用数据库访问组件之来龙去脉
- 粗解“new”之来龙去脉(一)
- 粗解“new”之来龙去脉(二)
- 粗解“new”之来龙去脉(三)
- 粗解“new”之来龙去脉(四)
- 原码、反码、补码之来龙去脉
- Android学习之Theme的来龙去脉
- Linux Kernel时间子系统之来龙去脉浅析
- C语言开发之Hello,World来龙去脉
- 详解iOS之AutoResizing、AutoLayout、sizeClass来龙去脉
- Android输入输出机制之来龙去脉之前生后世
- Android输入输出机制之来龙去脉之前生后世
- java学习——包装类
- java 阿里面试常见30道题目汇总
- 关于今天谈项目的事
- Parsing Strings with split
- LeetCode: Maximum Product Subarray
- 符号之来龙去脉
- ZOJ 3822 Domination 概率DP
- Girl_iOS100天学iOS的第十一天(流水日记一篇)
- asp.net C#母版页和内容页事件排版加载顺序生命周期
- poj 1759 Garland 二分搜索
- Verilog状态机详谈
- ASP.NET动态网站开发培训-39.互动论坛制作(七、制作回复留言页面)
- leetcode Permutations II
- 聪明的kk(南阳oj171)(dp固定终点的最长路)