找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7086|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

關(guān)于C語(yǔ)言#define與sbit 有什么區(qū)別?求大佬解惑

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:429602 發(fā)表于 2018-11-19 23:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
#define與sbit 有什么區(qū)別?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

5#
ID:194257 發(fā)表于 2018-11-20 09:31 | 只看該作者
#define是預(yù)處理宏命令:一般C或C++語(yǔ)言源程序中允許用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)字符串,稱為“宏”。被定義為“宏”的標(biāo)識(shí)符稱為“宏名”。在編譯預(yù)處理時(shí),對(duì)程序中所有出現(xiàn)的“宏名”,都用宏定義中的字符串去代換,這稱為“宏代換”或“宏展開(kāi)”。宏定義是由源程序中的宏定義命令完成的。宏代換是由預(yù)處理程序自動(dòng)完成的。
sbit是定義特殊功能寄存器的位變量
回復(fù)

使用道具 舉報(bào)

地板
ID:246251 發(fā)表于 2018-11-20 09:10 | 只看該作者
#define 是宏定義,c語(yǔ)言里的,可以在所有單片機(jī)里用,sbit只能在51 上用
回復(fù)

使用道具 舉報(bào)

板凳
ID:429665 發(fā)表于 2018-11-20 09:09 | 只看該作者
一個(gè)在編譯期替換,一個(gè)在運(yùn)行期生效
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:429243 發(fā)表于 2018-11-20 09:01 | 只看該作者
#define是宏定義,是一個(gè)預(yù)編譯指令。
如#define PI 3.14     在預(yù)編譯階段,會(huì)將PI替換為3.14

sbit是C51擴(kuò)展的變量類型
回復(fù)

使用道具 舉報(bào)

樓主
ID:164602 發(fā)表于 2018-11-20 08:03 | 只看該作者
兩者區(qū)別大了。
#define 就是通常說(shuō)的宏定義,它可以將一個(gè)資源命名。我看到的有兩類應(yīng)用:
第一:將IO口換一個(gè)名字,如:#define LED P2    意思就是將P2口重新命名為L(zhǎng)ED;
第二:宏定義,將一個(gè)語(yǔ)句集合命名,例如:#define goto {ML1=1;ML2=0;MR1=1;MR2=0}

sbit特殊功能寄存器的一個(gè)位的聲明,如:sbit LED0=P2^0;

看看,完全沒(méi)有共同之處吧。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表