13693|17

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于#define和sbit的区别 [复制链接]

#defined P01=P0^1;

sbit P01=P0^1;

请问下这2个有却别吗?用以来像执行P01=0;P01=1;感觉一样

最新回复

sbit 习惯定义端口会多点  详情 回复 发表于 2009-9-21 21:54
点赞 关注(1)

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没什么差别吧
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没啥差别
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 
sbit  是定义位,只能用于位.#defined 是名字替换。
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

5
 
第一句,错了,等号 干嘛用的?
哪里看的 define 语法?/

再有,第一个方法,特定情况下才对

刚才没仔细看
不好意思
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 
啊,多写了个等号
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
而且多了个 “;”

引用 5 楼 wangfan027 的回复:
啊,多写了个等号
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
#defined P01 P0^1
sbit P01=P0^1;

#define的用处参考大量的C语言基础资料。对应的P01仅仅是预编译期的文本替换效果,实际运行时堆栈中不存在P01这个东西。

sbit是变量类型,对应的P01是一个变量,实际运行时堆栈中已经分配了对应的空间。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
自己去看看keil出来的汇编代码
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

10
 
知道define 和 typedef 的区别就知道了。
一个是字符替换,一个是类型定义。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 
习惯问题,第二种写法不用keil代码就不能用了。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

12
 
用起来 都一样,7楼 解释的很专业
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

13
 
恰恰:
#define P01 (P0^1)
P01=0;//error C213: left side of asn-op not an lvalue
使用:
sbit P01=(P0^1);
P01=0;//OK
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(中级)

14
 
引用 12 楼 schlafenhamster 的回复:
恰恰:
#define P01 (P0^1)
P01=0;//error C213: left side of asn-op not an lvalue
使用:
sbit P01=(P0^1);
P01=0;//OK

为什么会出现这个问题呢?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

15
 
P0^1不可作为赋值表达式左值。所以需要用sbit变量。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

16
 
P0^1

在执行到这句的时候,编译器直接去找它的值了


而不是把它当成一个寄存器的位去看待

 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
#define 是不带参数的宏定义,比如#define PI 3.14
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

18
 
sbit 习惯定义端口会多点
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

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