6214|18

192

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

模块化编程问题!!! [复制链接]

之前版主给的一个资料我现在才看

整到模块化了,很有用但是不会用啊。。。

简单就是我建立一个LED.c的源文件,然后想建立LED .h 的头文件。问题就是我建立完了LED.c的源文件后里面自动包含一个reg52.h的头文件,然后我建立LED .h 的头文件后,它不再LED.c里面。而是并列关系。不知道对不对,也不知道是不是我的.h文件建立方法不对。

请指教.h建立方法,谢谢

我把我写的那个传附件了,谢谢大家看看

[ 本帖最后由 51学习者 于 2012-4-1 10:00 编辑 ]

模块化.rar

14.41 KB, 下载次数: 31

大家看看,第一次弄这个迷惑啊

此帖出自51单片机论坛

最新回复

extern u8 TxBuffer[100];这样不行 改成extern u8 TxBuffer[];告诉编译器这是个数组就好,不能再定义大小了  详情 回复 发表于 2012-9-5 11:43
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

回复 楼主 51学习者 的帖子

保存文件时用后缀".h"


文件格式:

#ifndef _文件名_h_
#define _文件名_h_

...文件内容...

#endif
此帖出自51单片机论坛
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

板凳
 
楼上说的没错,但好像不是楼主想要问的。
我一般是这样的,.C和.h的同名,关系算是并列吧。但.h的不用添加到工程里面,而是用主函数包含。
那么.h文件里面写点儿什么呢?我一般是这样的,在.C函数里面用到的一些变量就在.C里面声明,函数当然也在.C里面写。然后把这些变量和函数在.h文件里面声明,也就是用extern。我没经过什么培训,反正自己一直这么用的。你看看合适不!
如果没有这样弄过的有的时候会在不同的头文件里面再包含了其他的头文件,引起重定义,用的时候得注意一下,想办法解决了。
此帖出自51单片机论坛

点评

请教一下,我在模块化编程时全局变量放在哪里定义?我定义了一个#include.h来放这些全局变量, extern u8 USART1_Receive_FLAG ; extern u8 TxBuffer[100]; 在main.c和stm32f10x_it.c里都调用到,但是编译提示重  详情 回复 发表于 2012-9-4 21:07
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

4
 

回复 沙发 51新手 的帖子

这个我会。。。。还是谢了
此帖出自51单片机论坛
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

5
 

回复 板凳 jishuaihu 的帖子

但.h的不用添加到工程里面!!
我可以这样理解不:::就是直接建立一个.h的文件,然后保存了,然后写内容,然后就不用像写.c文件那样添加到工程里面了,对不??
比如LED.c会自动调用LED.h,是吧??
谢谢斑竹
此帖出自51单片机论坛
 
 
 

回复

202

帖子

0

TA的资源

一粒金砂(中级)

6
 
可以先找个简单的例程,看看人家怎么写的,怎么个格式!
此帖出自51单片机论坛
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

7
 

回复 6楼 yongpeiyuan 的帖子

写倒是会写,我就是看着例程写的。。。
不会建立。。。
此帖出自51单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

8
 
.h和.c放在同一个目录下面,在.c里面引用.h,用单引号引用
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

9
 

回复 7楼 51学习者 的帖子

不用建立,直接加个纯文本的文件就好了。 .c和.h最大的区别就是.h不生成任何代码

 

一个。c太大了你也可以在任何地方include “XXX。c”把它分成几个

[ 本帖最后由 huo_hu 于 2012-3-31 22:51 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

10
 

原帖由 cain0203 于 2012-3-31 17:53 发表 .h和.c放在同一个目录下面,在.c里面引用.h,用单引号引用

 

可以不在同一个目录下面,加路径就行,linux格式路径

 

另外“和< 是有区别的

此帖出自51单片机论坛
 
 
 

回复

1万

帖子

16

TA的资源

版主

11
 

你就一个C文件建立H文件干么?

多个文件一起编译再建
此帖出自51单片机论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

12
 

回复 8楼 cain0203 的帖子

好像是双引号"  "  吧
此帖出自51单片机论坛
 
 
 

回复

449

帖子

0

TA的资源

纯净的硅(高级)

13
 
不如你把版主给你的学习资料也共享下吧,,
此帖出自51单片机论坛
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

14
 

回复 13楼 kobe1941 的帖子

放假回来传 哈哈下班了
此帖出自51单片机论坛
 
 
 

回复

127

帖子

0

TA的资源

一粒金砂(高级)

15
 
头文件是编译预处理会调用的,不用添加到工程
此帖出自51单片机论坛
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

16
 
谢谢大家 问题解决了,不是建立文件的问题。。。。有个地方的程序写错啦
感谢大家关注
此帖出自51单片机论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

17
 

回复 板凳 jishuaihu 的帖子

请教一下,我在模块化编程时全局变量放在哪里定义?我定义了一个#include.h来放这些全局变量,
extern u8 USART1_Receive_FLAG ;
extern u8 TxBuffer[100];
在main.c和stm32f10x_it.c里都调用到,但是编译提示重复定义吧
.\Object\模板工程.axf: Error: L6218E: Undefined symbol TxBuffer (referred from stm32f10x_it.o).
.\Object\模板工程.axf: Error: L6218E: Undefined symbol USART1_Receive_FLAG (referred from stm32f10x_it.o).
如果只在main.c里定义编译stm32f10x_it.c有通不过,像这种各个文件都要用到全局变量在模块化编程时应该怎么处理
谢谢
此帖出自51单片机论坛

点评

extern u8 TxBuffer[100];这样不行 改成extern u8 TxBuffer[];告诉编译器这是个数组就好,不能再定义大小了  详情 回复 发表于 2012-9-5 11:43
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

18
 
Undefined symbol 不是重复定义,是没有定义。你只extern了。但是没有定义具体在哪儿吧
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

19
 

回复 17楼 tang_jun_001 的帖子

extern u8 TxBuffer[100];这样不行
改成extern u8 TxBuffer[];告诉编译器这是个数组就好,不能再定义大小了
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表