对C++中的外部变量和外部函数的认识
2014-12-14 22:53
162 查看
引入多文件组织结构后,就需要知道外部变量和外部函数的知识。
在命名空间中声明的变量,默认情况下都是外部变量,外部变量是能够在多个源文件中共享的全局变量,外部变量的引入就是为了解决数据共享的问题,在一个源文件中定义的外部变量,要在另一个文件中使用时,要用extern关键字修饰。
在命名空间中声明的函数,默认情况下都是外部函数,外部函数也能够在多个源文件中共享,要使用外部函数时,用不用extern关键字都行,不过为了可读性,最好还是加上。
至此,你会发现外部变量和外部函数都与命名空间有很大联系,总结:外部变量和外部函数都是在命名空间中声明的,都是能够在源文件间共享的。
接下来要谈谈把变量和函数限定在某一个源文件中的方法。
为什么要限定呢?有两方面的原因:1出于安全性考虑,有些内容不希望对其他源文件开放,以保护数据;2当工程项目比较大时,多个源文件中的变量和函数有可能重名,这会在编译时引起不可预知的错误,而进行限定就会避免这个问题。
限定通常有两种方法,以前经常用的方法是用static关键字修饰要进行限定的内容,这时static关键字的作用和extern关键字的作用刚好相反,它的作用是将它修饰的内容限定在它所在的源文件中。
而现在已经不太提倡用这种方法了,当然还可以用。现在常用的方法是将要限定的内容放在匿名命名空间中,由于各个匿名命名空间各不相同,所以另一个源文件不能使用别的匿名命名空间的变量和函数,实现了限定。
总结:外部变量和外部函数都是在命名空间中声明的,能够在多个源文件中共享。
以上就是我对外部变量和外部函数的一些认识。
在命名空间中声明的变量,默认情况下都是外部变量,外部变量是能够在多个源文件中共享的全局变量,外部变量的引入就是为了解决数据共享的问题,在一个源文件中定义的外部变量,要在另一个文件中使用时,要用extern关键字修饰。
在命名空间中声明的函数,默认情况下都是外部函数,外部函数也能够在多个源文件中共享,要使用外部函数时,用不用extern关键字都行,不过为了可读性,最好还是加上。
至此,你会发现外部变量和外部函数都与命名空间有很大联系,总结:外部变量和外部函数都是在命名空间中声明的,都是能够在源文件间共享的。
接下来要谈谈把变量和函数限定在某一个源文件中的方法。
为什么要限定呢?有两方面的原因:1出于安全性考虑,有些内容不希望对其他源文件开放,以保护数据;2当工程项目比较大时,多个源文件中的变量和函数有可能重名,这会在编译时引起不可预知的错误,而进行限定就会避免这个问题。
限定通常有两种方法,以前经常用的方法是用static关键字修饰要进行限定的内容,这时static关键字的作用和extern关键字的作用刚好相反,它的作用是将它修饰的内容限定在它所在的源文件中。
而现在已经不太提倡用这种方法了,当然还可以用。现在常用的方法是将要限定的内容放在匿名命名空间中,由于各个匿名命名空间各不相同,所以另一个源文件不能使用别的匿名命名空间的变量和函数,实现了限定。
总结:外部变量和外部函数都是在命名空间中声明的,能够在多个源文件中共享。
以上就是我对外部变量和外部函数的一些认识。
相关文章推荐
- c++函数内改变外部变量的值
- c++中全局变量、局部变量、内部函数、外部函数
- c++函数内改变外部变量的值
- ros(robot operating system机器人操作系统)订阅函数的多线程使用方法(C++: 外部变量控制跳出for循环)
- C++调用外部函数和外部变量
- 享变量内有一个函数指针,是外部传进来的。 可我一使用这个函数指针,就出错了
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- C/C++中变量及函数命名的讨论
- C++学习笔记(3)——成员变量、成员函数的指针
- C 程序的外部变量与函数
- c++声明/定义,静态/非静态,变量/函数
- C中全局变量和函数声明的认识
- 函数内定义的static变量怎样在外部访问和修改
- c++两个常用函数:1.二进制字符串2 hex(十六进制)。2. 栈变量字符串2堆变量
- C 程序的外部变量与函数
- c++ 变量声明: 成员函数指针 成员变量指针
- 多文件程序(extern声明、内部函数、外部函数、外部变量、文件包含)
- 我对C语言变量的一些认识 - c/c++ - CSDN技术中心
- C 程序的外部变量与函数
- C++中线程函数中方访问成员变量的问题