EDN首页   博客首页

日志档案

发表于 2008-11-27 9:47:39

2

标签: KEIL  C51  L104  extern  编译  

KEIL C51 L04编译错误的解决办法

   今天整理整理程序,编译时遇到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编辑过该文章

    阅读(191)    回复(0)  

投一票您将和博主都有获奖机会!