多个源程序组成程序编译问题
来源:互联网 发布:linux基础教程第二版 编辑:程序博客网 时间:2024/05/21 09:18
在所有函数之外定义声明的变量被默认为静态存储类型并被视为全局变量。全局变量可以被同一个文件中位于变量声明之后定义的任何函数访问。全局变量还可以被其他文件中的函数访问,若要做到这点,必须在使用全局变量的每一个文件中对这些全局变量进行声明。例如,若一个文件想利用另一个文件中声明的全局变量flag,那么该文件中必须包含以下语句在使用flag之前:
extern int flag;
编译器将通知链接程序,本文件中出现了对变量flag的未定值的引用,如果链接程序找不到变量flag的定义,那么就会发出一条出错信息,并且不生成可执行文件。如果链接程序找到了正确的全局变量的定义,那么就以变量flag的位置来确定那些未定值的引用。
函数原型也可以将它的作用域扩展到定义它的文件之外(函数原型并不需要extern说明符)。为了达到这个目的,只需简单的将函数原型包含在每一个想调用它的文件中,然后将这些文件一起编译即可(include)。函数原型会告诉编译器其指定的函数要么在本文件后面定义,要么在另外一个文件中定义。同样,编译器并不尝试确定对这个函数的引用,链接器来完成。如果链接器找不到,则会发出一条错误信息。
实际可能需要将一个全局变量或者一个函数的作用域限定在定义它的文件之内,将存储类型说明符static应用于全局变量或函数时,就可以阻止在本文件之外定义的函数访问它们。这被称为内部链接(internal linkage)。在定义前没有加上static的全局变量或者函数就是外部链接(external linkage)–如果在其他文件中包含了适当的声明或函数原型,那么在这些文件中是可以被访问的。
全局变量的声明:
static const double PI = 3.14159;
说明符static通常用在仅能被特定文件中的函数所调用的实用函数中。
- 多个源程序组成程序编译问题
- 文件包含---多个源程序的编译和链接
- [Intel汇编-MASM]源程序的组成以及编译调试
- 如何编译由多个c++源文件组成的项目
- 汇编语言源程序组成
- 第一个API程序编译问题
- 第一个示例程序FreakOut编译问题
- linux c的连接库和怎么同时编译多个源程序
- 2008.10.21 一个程序包含多个源程序文件的情况
- 编译系统组成及程序执行过程
- windows下设置由多个项目组成的解决方法的编译环境
- 编译《深入解析MFC》第一个程序遇到的问题
- Makefile之编译多个可执行程序
- 命令行编译c#源程序
- 命令行编译Qt源程序
- Java命令行编译源程序
- 源程序的编译过程
- 课程设计:源程序编译
- Struts2性能调优配置
- git忽略文件方法
- 11单元和12单元作业
- P1057 传球游戏 洛谷
- CentOS中使用VeraCrypt(四):进阶操作
- 多个源程序组成程序编译问题
- Unity问题集合
- Length of Last Word
- 学习Android中广播的总结
- Android项目重构之路:架构篇
- .NetCore~C#6的一些新特性
- spring mvc设置应答体的content type
- 系统广播
- android studio 出现Error:Execution failed for task ':app:buildInfoDebugLoader'.的解决办法