永发信息网

c/c++中的标识链接有几种方式 外部链接 内部链接

答案:2  悬赏:20  手机版
解决时间 2021-04-10 19:07
c/c++中的标识链接有几种方式 外部链接 内部链接
最佳答案
当一个实现文件(.cpp ...)编译时,预处理器(CPP)首先递归的包含头文件,形成一个保含有所有必要信息的单个源文件. 这个源文件称为 编译单元.
内部连接 如果一个名称对于它的编译单元来说是局部的, 并且在连接的时候不可能与其它编译单元中的同样的名称相冲突,则这个名称具有内部连接.即具有内部连接的名称不会被带到目标文件中.
外部连接 在一个多文件程序中,如果一个名称在连接时可以和其他编译单元交互,那么这个名称就具有外部连接. 即具有外部连接的名称会引入到目标文件中,由连接程序进行处理.这种符号在整个程序中必须是惟一的.
具有内部连接的定义包括:
具有外部连接的定义包括:
声明本身不会将任何符合引入目标文件,所以声明都是内部连接的.
某些声明可以激活对一个外部连接定义的访问,也许我们会很随便的说这些声明具有外部连接,如:
int f();
extern int i;
class Point { static int s_numPoints; ... };
还有一些声明即不把什么符号引入目标文件,也不能用来激活对外部连接定义的访问,我们常常称这类声明具有内部连接,
typedef int INT;
class Point;
struct Point;
把一个带有外部连接的定义放在 .h 文件中都会引起错误.由于类的声明和定义都是内部连接的,一般都放在 .h 文件中.
非内联的类成员函数.如: Point& Point::operator+=(const Point& right) { ... }
非内联,非静态的自由函数. 如: Point operator+(const Point& left, const Point& right) { ... }
非静态的全局定义.
加 static 前缀的全局变量定义.如: static int x;
枚举类型的定义.如: enum Boolean {NO,YES };
类的定义. 如: class Point { int d_x; int d_y; ... };
内联函数的定义.如: inline int operator==(const Point& left,const Point&right) { ... }
union的定义.
名字空间中const常量定义

特别说明:

C++规定,有const修饰的变量,不但不可修改,还都将具有内部链接属性,也就是只在本文件可见。(这是原来C语言的static修饰字的功能,现在const也有这个功能了。)又补充规定,extern const联合修饰时,extern将压制const这个内部链接属性。于是,extern char const s[]将仍然有外部链接属性,但是还是不可修改的。 具体使用方法如下:
在cpp文件中:extern const int a=1;
在要使用该常量的cpp文件中:extern const int a;//也可以将其放到头文件中
cout< 当用extern修饰const变量将强制为其分配内存,因为extern表示采用外部链接,因此其必须有某个地址保存其值。
全部回答
不明白啊 = =!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
丘壑的词语意思是什么,沟壑的词语是什么意思
名锅贴饺子广东路店怎么去啊,有知道地址的么
可以租农村的土地开发旅游吗
有没有一个无毒且专门下载小游戏的网站?
单选题(2008·梅州)下列能源在利用时对环境污
哪首歌里有句歌词是??
曾经很想的一个人,但是现在他有别人了我承诺
世界上有多少种疾病和癌症?
一港元等于多少人民币
歇后语孔明三气周瑜,有关诸葛亮的歇后语
老机专用ghostxp sp2极速纯净版 v231305 怎么
梦到红鞋是什么意思
单选题下列说法中,正确的是A.相互压紧并发生
天天平价药店NO.11这个地址在什么地方,我要
谁能告诉我石家庄市第二中学怎么乘车啊,具体
推荐资讯
如何补充乙醛脱氢酶,人的体内如何能增加乙醛
表示珍惜爱情的诗句,关于珍惜现在所拥有的一
90后最大的也不过二十岁,我们还那么小,就被
舞团系统错误退不了团以前的团也解散了 已经
天为什么要下雨
初三提高成绩的学习方法
维生素D3新生儿什么时候吃
太和镇南井沟村卫生室地址在哪,我要去那里办
濮上园有什么好玩的?
psp系统重5.50升级到6.00大概要多少钱
同发建材松缘装饰在什么地方啊,我要过去处理
上海旳中国银行礼拜六上班麽?一般几点到几点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?