在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2316|回复: 0

[资料] 多文件程序

[复制链接]
发表于 2016-4-28 15:27:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

在实际的程序设计环境中,我们可能使用多个源文件,这次文字被分别编译,然后链接成一个可运行的目标代码。这种方法非常有用,因为一个文件中的任何修改,不会影响其他文件,这样就省去了重新编译整个程序的必要。

只要把变量声明为外部变量,多个源文件就可以共享它。被两个或多个文件共享的变量称为全局变量,因此必须在某个文件中进行相应的声明,然后再其他文件中显式地用extern进行定义。

file1.c                                               

main()

{

       externint m;

       inti;

       ......

       ......

}

function1()

{

       intj;

       ......

       ......

}


file2

int m

function2()

{

       inti;

       ......

       ......

}

function3()

{

       intcount;

       ......

       ......

}

filemain函数中可以引用变量m,该变量在file2中声明为全局的。记住,函数function1不能访问变量m。但是,如果extern int m语句是放在main函数之前,那么function1main函数就都可以引用m了。如果在file1的每个函数中都使用了extern int m语句,那么每个函数就都可以访问变量m

extern说明符告诉编译器,后面的变量类型和名称已经在其他地方进行了声明,不用为它们创造存储空间了。由链接器去解决问题。需要重点注意的是,多文件全局变量只能是在某一个文件中不带extern说明符进行声明的。如果在两个不同文件中把一个变量说明为全局变量,那么链接器将产生一个冲突,不知道该使用哪个变量,因此将发出一个警告。

file1.c

int m

main()

{

       {inti;

       ......

}

function1()

{

       intj;

       ......

}

file2.c                                               

       externint m;

function2()

       inti;

       ......

}

function3()

{

       intcount;

       ......

}

当一个函数定义在某个文件中,被另一个文件访问,那么在第二个文本中必须包含该函数的声明。该声明表明该函数时一个外部函数,其定义出现在其他的地方。我们通常把这种声明放在文件的开始处,位于所有函数之前。尽管所有函数都是假定为外部的,但良好的习惯是在函数声明时显式地使用extern说明符。

凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-26 00:41 , Processed in 0.015565 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表