成都控制器开发_容易出错!C语言中的extern可不能随便使用

栏目:成人教育  时间:2023-03-27
手机版

  本文介绍c语言中关键词extern用法的一个注意事项。

  在做项目开发时,在一个单片机C语言程序(用keil开发)中,如果有两个C文件,在其中一个C文件(设为a文件)定义了一个全局变量v,并在此文件里的程序段里修改此变量,在另外一个C文件(设为b文件)里用外部变量(extern)的方法引用此变量,并读取变量v,但是,在b中读取时结果变量v出错,出现乱值。

  什么原因?

  v在b文件里作为外部变量,被认为分配的地址在其他地方,在b文件里只是读取没有写入,实际就没有分配内存地址,从而出错。

  

  怎么修改?

  方法1,在b文件中定义此变量v,在a文件中用外部变量的方式引用变量v,在a文件里修改变量v,在b文件中回读变量v,结果正常。

  这样,在b文件里定义了变量v,分配了内存地址,在a文件中引用外部变量v并进行了写入操作,也分配了内存地址,所以不出错。

  

  方法2,最优方法,在一个c文件(如a.c)里定义全局变量v,在其h文件(a.h)里再引用为外部变量,在用到变量v的其他c文件里include a.h,这样的话不管是否读写都无问题。当然,a.c里也要include a.h。

  

  注意:全局变量才能被外部引用,静态变量和局部变量不行的。

上一篇:南京大学学霸毕业,日线走红,请逼自己优秀然后过上生活
下一篇:人民日报金句摘抄

最近更新成人教育