博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于C51 keil使用中.c文件的链接心得
阅读量:4983 次
发布时间:2019-06-12

本文共 590 字,大约阅读时间需要 1 分钟。

这个问题一直烦了我很久,使用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文件

转载于:https://www.cnblogs.com/buttonandline/p/10703843.html

你可能感兴趣的文章
lightoj1138
查看>>
HDU 3001 Travelling
查看>>
C++Primer读书笔记----第四章数组与指针(2)
查看>>
在iOS中使用Phonegap防止Webview被上下拖动
查看>>
50个必备的实用jQuery代码段
查看>>
wikioi--1044 拦截导弹
查看>>
Python 中的类与对象 初认识
查看>>
追逐学长的背影 - 2015年12月
查看>>
如何区分Python package
查看>>
vue-router重定向 不刷新问题
查看>>
反向传播算法1)
查看>>
crontab格式,命令
查看>>
P3097 [USACO13DEC]最优挤奶Optimal Milking
查看>>
[Groovy] List里的Inject方法
查看>>
技术随感
查看>>
第一百零三天 how can I 坚持
查看>>
第三百零三天 how can I 坚持
查看>>
Java并发编程学习笔记 深入理解volatile关键字的作用
查看>>
hdu 1828 Picture(线段树)
查看>>
JAVA学习第十四课(接口:implements及其基本应用)
查看>>