单片机C语言模块化编程问题:一个模块需要使用到SCLK,另外一个模块也用到SCLK,定义为sbit SCLK = P^0

小白求教各位大侠我应该怎么处理,使用extern吗?应该怎么做?两个模块都定义的话会重复的吧?... 小白求教各位大侠我应该怎么处理,使用extern吗?应该怎么做?两个模块都定义的话会重复的吧? 展开
 我来答
矮子根
2014-05-10 · TA获得超过5389个赞
知道大有可为答主
回答量:2120
采纳率:75%
帮助的人:529万
展开全部
使用exturn 申明外部定义是一种方法;也可以只在某一个头文件中定义一次,其他模块直接包含该头文件;或者只在一个模块中定义,然后在主程序的头文件中,包含各个子模块,并将有定义 的头文件位置放在前,其他需用该定义的子模块头文件放在后就行。
追问
麻烦再问一下
具体应该怎么写呢?
我的做法是在AD.c中定义 sbit sclk=P1^7;
AD.h中声明 extern sbit sclk;

然后mai.c中直接使用 sclk=0,但是编译报错,我应该怎么写?
追答
方式1:若在AD.h中定义:            sbit sclk=P1^7;
如果只在AD.c中使用这个定义, 则在AD.c的头文件中写: #include

方式2:若在AD.c中定义并使用: sbit sclk=P1^7;
而main.c等模块也要用到这个定义,但又没有包含AD.c的语句: #include
则在main.c的文件中声明: exturn sbit sclk=P1^7; //表示在其他文件中已定义过了.
烟火夜空
2014-05-10 · TA获得超过6619个赞
知道大有可为答主
回答量:1678
采纳率:93%
帮助的人:523万
展开全部
AD.h 文件:
#ifndef AD_H
#define AD_H
#define AD_ext extern
#else
#define AD_ext
//本处用于该H文件对应 主C文件(AD.c) 的使用IO定义,如sbit K0=P1^2;本定义只对 主C文件有效
sbit SCLK=P1^7;
#endif
后面跟着写函数声明,所有 本H对应的 主C文件(AD.c) 的函数名称前面都加上 AD_ext,如:
AD_ext uchar AD_Change();

main.c 文件
#include"XXXXXXX"
sbit SCLK=P3^3; //重复某 C 文件内的名称,不影响
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式