对C++中的外部变量和外部函数的认识

引入多文件组织结构后,就需要知道外部变量和外部函数的知识。

在命名空间中声明的变量,默认情况下都是外部变量,外部变量是能够在多个源文件中共享的全局变量,外部变量的引入就是为了解决数据共享的问题,在一个源文件中定义的外部变量,要在另一个文件中使用时,要用extern关键字修饰。

在命名空间中声明的函数,默认情况下都是外部函数,外部函数也能够在多个源文件中共享,要使用外部函数时,用不用extern关键字都行,不过为了可读性,最好还是加上。

至此,你会发现外部变量和外部函数都与命名空间有很大联系,总结:外部变量和外部函数都是在命名空间中声明的,都是能够在源文件间共享的。

接下来要谈谈把变量和函数限定在某一个源文件中的方法。

为什么要限定呢?有两方面的原因:1出于安全性考虑,有些内容不希望对其他源文件开放,以保护数据;2当工程项目比较大时,多个源文件中的变量和函数有可能重名,这会在编译时引起不可预知的错误,而进行限定就会避免这个问题。

限定通常有两种方法,以前经常用的方法是用static关键字修饰要进行限定的内容,这时static关键字的作用和extern关键字的作用刚好相反,它的作用是将它修饰的内容限定在它所在的源文件中。

而现在已经不太提倡用这种方法了,当然还可以用。现在常用的方法是将要限定的内容放在匿名命名空间中,由于各个匿名命名空间各不相同,所以另一个源文件不能使用别的匿名命名空间的变量和函数,实现了限定。

总结:外部变量和外部函数都是在命名空间中声明的,能够在多个源文件中共享。

以上就是我对外部变量和外部函数的一些认识。

              

你可能感兴趣的:(C++)