找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6608|回复: 5
打印 上一主题 下一主题
收起左侧

关于C语言#define与sbit 有什么区别?求大佬解惑

[复制链接]
跳转到指定楼层
楼主
ID:429602 发表于 2018-11-19 23:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define与sbit 有什么区别?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:164602 发表于 2018-11-20 08:03 | 只看该作者
两者区别大了。
#define 就是通常说的宏定义,它可以将一个资源命名。我看到的有两类应用:
第一:将IO口换一个名字,如:#define LED P2    意思就是将P2口重新命名为LED;
第二:宏定义,将一个语句集合命名,例如:#define goto {ML1=1;ML2=0;MR1=1;MR2=0}

sbit特殊功能寄存器的一个位的声明,如:sbit LED0=P2^0;

看看,完全没有共同之处吧。
回复

使用道具 举报

板凳
ID:429243 发表于 2018-11-20 09:01 | 只看该作者
#define是宏定义,是一个预编译指令。
如#define PI 3.14     在预编译阶段,会将PI替换为3.14

sbit是C51扩展的变量类型
回复

使用道具 举报

地板
ID:429665 发表于 2018-11-20 09:09 | 只看该作者
一个在编译期替换,一个在运行期生效
回复

使用道具 举报

5#
ID:246251 发表于 2018-11-20 09:10 | 只看该作者
#define 是宏定义,c语言里的,可以在所有单片机里用,sbit只能在51 上用
回复

使用道具 举报

6#
ID:194257 发表于 2018-11-20 09:31 | 只看该作者
#define是预处理宏命令:一般C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。
sbit是定义特殊功能寄存器的位变量
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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