关于C51 keil使用中.c文件的链接心得
Posted buttonandline
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C51 keil使用中.c文件的链接心得相关的知识,希望对你有一定的参考价值。
这个问题一直烦了我很久,使用C51 keil进行.c文件链接的时候,老是报错诸如下面的信息:
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: aa
MODULE: brightnessCTRL.obj (BRIGHTNESSCTRL)
DEFINED: LED_Screen.obj (LED_SCREEN)
但是我发现,我确实只定义了一个这样名称的变量
其实这一点在arm keil中不会出现,arm keil的宽容度要好得多。
经过探索,我总结以下经验:
1. .h文件中可以包含宏定义(#define)、不知道叫啥(typedef)、函数的声明、sbit、变量的声明(extern),绝不能包含变量的定义。
2. 根据第一点,我们可以把变量定义放在子.c文件中,.h文件中用extern。sbit直接在.h中声明(这里用定义还是声明不好说)
3. #include<>其实是可以包含.c文件的,如#include<XX.c>
4. 根据第三点,我们可以把子.c文件包含在有main函数的主.c文件中。而子.c和主.c文件都要用的.h文件可以一并写在子.c中。这样可以省略写.h文件,就能链接多个.c文件
以上是关于关于C51 keil使用中.c文件的链接心得的主要内容,如果未能解决你的问题,请参考以下文章