矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2430|回复: 4

这个51单片机的头文件有点看头,不解啊,赐教啊。

[复制链接]
     
发表于 2018-2-24 23:23:20 | 显示全部楼层 |阅读模式
这个是一个程序内的51单片机头文件,除了知道enum是枚举外,其他看的一头雾水/
#ifndef _MAIN_H   
#define_MAIN_H
#endif
extern enum
上面这些都是些啥意思?
老师指导下,越详细越好,忘了补充,程序是一个1602显示带温度检测的万年历。
头文件.jpg
     
发表于 2018-2-24 23:57:57 | 显示全部楼层
只会玩汇编的路过,年纪大了也不想再学C了
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 00:30:42 | 显示全部楼层
楼主最近玩命的学啊。
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 04:23:39 | 显示全部楼层
#ifndef _MAIN_H   
#define_MAIN_H
......
#endif

如果没有定义 _MAIN_H, 就定义 _MAIN_H, 并且包含插入......中的内容到当前文件中
如果已定义了 _MAIN_H, ......中的内容不会被包含插入到当前文件中

这种情况用于被其它多个.c/.h包含插入(#include)的基础定义文件
如文件 A.h
在B.h 中有#include A.h
在C.h 中也有#include A.h
在D.h 中也有#include A.h

那么如在文件X.c中有
#include A.h
#include B.h
#include C.h
#include D.h
如A.h中无以上定义, 编译器会把A.h 同样的内容至少4次插入到X.c中, 会引起错误
如A.h有以上声明, 在X.c中, A.h在被多个文件包含(#include)时, 包含(#include)A.h第一次时即定义_MAIN_H, 以后再包含(#include)A.h时, 因为已经定义了 _MAIN_H, 所以A.h不再重复插入. X.c中只会插入一次A.h

建义楼主打开全部Listing选项, 然后项目目录内会产生一些.lst/.i/.map/.txt文件, 看看这些文件或许会更好理解编译器工作原理
回复 支持 反对

使用道具 举报

     
发表于 2018-2-25 07:24:57 | 显示全部楼层
编译选项,用来在编译时确定某个芯片对应的特定程序段应当被写入或不写入。这常常用来为同一系列不同版本的芯片设置相适应的程序段。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-30 11:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表