标签:
KEIL C51 L104 extern 编译
今天整理整理程序,编译时遇到L104错误,这个错误涉及到extern的用法。这里作一简要介绍。
对于比较小的程序,一般只有一个c文件和一个头文件,全局变量我们通常会直接定义在c文件中,在程序之前对变量进行定义就可以了。
在较大的程序中,经常采用模块化处理程序,此时定义的方法有两种:
1、用extern来声明:extern bit DispFlag;这一句只是对变量DispFlag进行声明,在c文件的程序之前必须加上bit DispFlag进行定义。extern bit DispFlag="0";这一句声明和定义都做了。
2、对于大一点的程序,有很多c文件和头文件,这个时候全局变量就必须在头文件中声明,然后在一个c文件中定义。如果在头文件中定义,则编译的时候会出现重复定义的错误。如果只有头文件中声明就会出现没有定义有警告。
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: DISPFLAG
MODULE: PS2.obj (PS2)
出现上述错误则是因为变量DispFlag重复定义。解决办法就是把你的头文件中的变量定义前加extern声明变量,此时不要定义变量,然后再在某一个c文件的程序之前再定义一下就可以了。
例如:在PS2.H中声明变量DispFlag
extern bit DispFlag;
在ps2.c中定义变量
bit DispFlag="0";
这样就不会出现上面的错误提示了。
系统分类:
单片机 | 用户分类:
单片机 | 来源:
原创 | 【推荐给朋友】 | 【添加到收藏夹】
该用户于2008-11-27 9:49:27编辑过该文章