4325|8

1

帖子

0

TA的资源

禁止访问

楼主
 
提示: 作者被禁止或删除 内容自动屏蔽
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这样写就OK了。
ram.h
#ifndef __RAM_H__
#define __RAM_H__
#define uchar unsigned char
#define uint unsigned int
uchar aaa;
#endif

a.c
#include "ram.h"
void a()
{
aaa=1;
}

b.c
#include "ram.h"
void b()
{
diaplay(aaa);
}
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
ram.h
#define uchar unsigned char
#define uint unsigned int
extern uchar aaa; //修改为uchar aaa; extern表示变量声明,未定义。





 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
2楼的方法我试过好像不行,还是不能赋值,取值。

现在用这种方法倒是可以,但是我不知道是否合理,

再添加一个ram.c文件
内容如下:
#include "ram.h"
uchar aaa;


这样倒是所有的×.c都能赋值读取,但是对于结构体却没有作用,不知道为何?

补,谢谢楼上两位答疑。




 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
去掉extern ,编译不通过。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

6
 
完整的编译通过的。
main.c
#include "ram.h"
uchar aaa;
main()
{ a();
  b();
}

a.c
#include "ram.h"
void a()
{
aaa=1;
}

b.c
#include
#include
#include "ram.h"
void b()
{
printf("%d",aaa);
}

ram.h
#ifndef __RAM_H__
#define __RAM_H__
#define uchar unsigned char
#define uint unsigned int
extern uchar aaa;
void a();
void b();
#endif
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
在main.h里面声明了extern,那在main.c里面得定义一个uchar。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
一处定义原则:

必须在一个地方,且仅一个地方有定义:
unsigned int XXX;

可在多个你用到的地方前声明

extern unsigned int XXX;
extern告诉编译器,这个东西是别的文件的,从整个工程里找


另外:
能不用全局变量的时候就别用,如果非用不可,那一定要写好注释,在什么时候,什么地方什么操作这个变量

否则,这样的代码没有办法维护,而且,很多时候怎么死的都不知道
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
你根本就没有定义全局变量!
extern uchar aaa; 只是告诉其它的文件aaa是一个全局变量,但是你没有定义啊

一般式这样写的

qww.h文件

#ifndef QWW_H
#define QWW_H

extern unchar aaa;

#endif


qww.c文件
#include qww.h
uchar aaa = 0;

这样就可以了

最好的头文件添加一个宏定义,确保不是重复引用头文件
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表