今天整理整理程序,编译时遇到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";
这样就不会出现上面的错误提示了。
用户377235 2014-1-26 16:26