#defined P01=P0^1;
sbit P01=P0^1;
请问下这2个有却别吗?用以来像执行P01=0;P01=1;感觉一样
sbit 是定义位,只能用于位.#defined 是名字替换。
第一句,错了,等号 干嘛用的?
哪里看的 define 语法?/
再有,第一个方法,特定情况下才对
刚才没仔细看
不好意思
#defined P01 P0^1
sbit P01=P0^1;
#define的用处参考大量的C语言基础资料。对应的P01仅仅是预编译期的文本替换效果,实际运行时堆栈中不存在P01这个东西。
sbit是变量类型,对应的P01是一个变量,实际运行时堆栈中已经分配了对应的空间。
知道define 和 typedef 的区别就知道了。
一个是字符替换,一个是类型定义。
恰恰:
#define P01 (P0^1)
P01=0;//error C213: left side of asn-op not an lvalue
使用:
sbit P01=(P0^1);
P01=0;//OK
P0^1不可作为赋值表达式左值。所以需要用sbit变量。
P0^1
在执行到这句的时候,编译器直接去找它的值了
而不是把它当成一个寄存器的位去看待
#define 是不带参数的宏定义,比如#define PI 3.14