美文网首页
C太多的缺省可见性

C太多的缺省可见性

作者: Mr_Bluyee | 来源:发表于2018-07-22 22:13 被阅读14次

定义C函数时,在缺省情况下函数的名字是全局可见的。可以在函数的名字前加个冗余的extern关键字,也可以不加,效果是一样的。
这个函数对于链接到它所在的目标文件的任何东西都是可见的,如果想限制对这个函数的访问,就必须加个static关键字。

return_type fun() { /*在任何地方均可见*/ }  
extern return_type fun() { /*在任何地方均可见*/ }  
static return_type fun() { /*在这个文件之外不可见*/ }  

在C中,事实上,很多人都没有在函数名前添加存储类型说明符的习惯,所以大多数函数都是全局可见的。
这种太大范围的全局可见性会与C语言的另一个特性互相影响,那就是interposition。interposition就是用户编写和库函数同名的函数并取而代之的行为。许多C程序员完全没有注意过这个特性。
范围过宽的问题常见于库中:一个库需要让一个对象在另一个库中可见,唯一的方法是让它变得全局可见。但这样一来,它对于链接到该库的所有对象都是可见的了。这就是"all-or-nothing"——一个符号要么全局可见,要么对其他文件都不可见。在C语言中,对信息可见性的选择就是这么有限。
一个大型函数内部的一群调用的内部函数,如果外文件调用不到这些内部函数,在这些函数声明时最好加上static限定符,否则缺省情况下这些内部函数是全局可见的。
软件对象在大多数情况下应该缺省的采用有限可见性,当程序员需要让它全局可见时,应该采用显示的手段。

相关文章

  • C太多的缺省可见性

    定义C函数时,在缺省情况下函数的名字是全局可见的。可以在函数的名字前加个冗余的extern关键字,也可以不加,效果...

  • 类图

    属性的表示方式为:【可见性】【属性名称】:【类型】={缺省值,可选} 方法的表示方式为:【可见性】【方法名称】(【...

  • UML(一)类图

    类的表示方法 属性表示——可见性 名称 :类型 [=缺省值] 方法表示——可见性 名称 (参数列表) [:返回值类...

  • C++程序设计学习笔记:1 从C走进C++ 函数参数的缺省值

    在 C++ 中,定义函数的时候,可以让最右边的连续若干个参数有缺省值。 例如: 函数参数的缺省值可以提高软件的可扩...

  • Java核心技术卷一 类与继承

    今日学习成果 1.控制可见性(访问)的四个关键字:public、protected、缺省()、prviate 2....

  • 读、画 UML 类图

    一、表示类的属性和方法 类中包括属性和方法。属性定义的形式:可见性 名称 : 类型 [= 缺省值]方法定义的形式:...

  • C++ - 函数的缺省参数

    C++中,定义函数的时候可以让最右边的连续若干个参数有却兴致,那么调用函数的时候,若响应位置不写参数,参数就是缺省...

  • c++函数的缺省参数

    定义 c++中,定义函数的时候可以让最右边的连续若干个参数有缺省值,在调用函数的时候,如果不写相应位置的参数,则调...

  • C++函数的缺省参数

    在定义函数的时候,我们可以“初始化”形参的值,这样做就可以不向函数中传递参数,如果不传递参数,那么函数会使用默认形...

  • 编程术语中英对照

    访问控制:access control可访问性:accessibility缺省:default信息隐藏:infor...

网友评论

      本文标题:C太多的缺省可见性

      本文链接:https://www.haomeiwen.com/subject/egmrmftx.html