标题: 关于C语言#define与sbit 有什么区别?求大佬解惑 [打印本页]

作者: linzib    时间: 2018-11-19 23:35
标题: 关于C语言#define与sbit 有什么区别?求大佬解惑
#define与sbit 有什么区别?


作者: HC6800-ES-V2.0    时间: 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;

看看,完全没有共同之处吧。
作者: tingyuluo    时间: 2018-11-20 09:01
#define是宏定义,是一个预编译指令。
如#define PI 3.14     在预编译阶段,会将PI替换为3.14

sbit是C51扩展的变量类型
作者: hanlng    时间: 2018-11-20 09:09
一个在编译期替换,一个在运行期生效
作者: new_hand    时间: 2018-11-20 09:10
#define 是宏定义,c语言里的,可以在所有单片机里用,sbit只能在51 上用
作者: xiaoshan7748    时间: 2018-11-20 09:31
#define是预处理宏命令:一般C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。
sbit是定义特殊功能寄存器的位变量




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1