北海-叶明的专栏

叶明珠 叶孤诚 叶来香 之联合博客

链接

1)          启动模块

创建C/C++程序时,链接器会链接启动模块,这个初始化程序会建立堆栈,初始化变量。

2)          库函数

尽量使用C/C++标准库函数,实在没有,也尽量使用符合

POSIX可移植性标准的函数。

3)          内部链接

如果一个名称对于它的编译单元(cpp)来说是局部的,并且在链接时不会与其它编译单元(cpp)中同样的名称相冲突,那么称这个名称有内部链接。

 

内部链接不可能通过extern变量去访问位于其他编译单元定义的变量。

(注意:有时也将声明看作是无链接的,这里我们统一看成是内部链接的)

l       所有的声明

声明举例请参考

http://blog.csdn.net/yeming81/archive/2010/05/31/5637695.aspx

 

l       命名空间(包括全局空间)中的静态函数、静态友元函数、静态变量的定义

各个命名空间中的名称不会冲突,所以是内部链接。全局的静态函数是内部链接,因为static控制作用域在本文件(编译单元)中。

l       enum定义

l       struct定义

l       union的定义

l       inline函数定义

包括全局和类里面定义的。如果有两个同名的函数,会出现链接错误。加上inline就可以了,因为内部链接的缘故。

l       类的定义

也就是说在不同的文件里出现同名的类是不会出现链接错误的,因为名字不冲突。这也是为什么include同一个class定义不会报错的原因。

l       命名空间中const常量定义

也就是说在不同的文件里出现同名的常量是不会出现链接错误的,因为名字不冲突。

 

4)          外部链接

除了内部链接都属于外部链接,举例如下:

l       类的非inline函数定义

如果在A.cpp中有类A的定义,B.cpp也有类A的定义。没问题,因为类的定义属于内部链接。但是,如果A类有一个非inline函数Func1B中的A类也有一个同名的函数Func1,这时候就出现链接错误。

 

l       类的静态变量的定义

如果不同文件的同名类含有同样名字的静态变量,链接时出错。

 

l       全局函数(非static)和变量(非const

 

l       命名空间

 

5)          无链接

只有那些在链接或装载期间有地址的元素,才有链接。比如类声明或局部变量就无链接。

阅读更多
想对作者说点什么? 我来说一句

ado.nett数据库的链接

2009年12月31日 1.84MB 下载

链接测试工具Xenu

2010年09月02日 202KB 下载

图标链接选择

2011年10月06日 257KB 下载

翻转链接.rar翻转链接.rar

2010年03月23日 760B 下载

雾化链接.rar雾化链接.rar

2010年03月25日 804B 下载

maven-3.0.3下载链接

2018年03月31日 47B 下载

loadrunner破解及问题解决

2014年12月16日 465B 下载

人机与三菱通信的链接

2009年11月30日 319KB 下载

更酷的链接提示.rar

2010年03月23日 1KB 下载

HTML5锚点链接

2018年06月13日 373KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭