首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

#define的有关问题 #define delay_2us(x) while(-x) 不能传数字

2012-08-01 
#define的问题 #define delay_2us(x) while(--x) 不能传数字#include reg52.h#include intrins.hsbit

#define的问题 #define delay_2us(x) while(--x) 不能传数字
#include <reg52.h>
#include <intrins.h> 


sbit LED = P1^7;
#define delay_2us(x) while(--x)
#define S(a,b) a*b 


void main(void)
{
   
unsigned char temp = 10;
while(1)
{
  temp = S(temp,temp);
delay_2us(1); //这里有问题 为什么? 可以穿变量
}
}

[解决办法]
define delay_2us(x) do { int t = (x); while(--t); } while (0)
[解决办法]
因为while(--X),在为1的时候,直接为0,相当于没有执行,并不是穿越,呵呵。
[解决办法]
直接传数字的话 相当于一个立即数或者说一个不可修改的值,那么--x这样的式子就肯定报错
[解决办法]
宏的参数只是简单滴替换

C/C++ code
delay_2us(1);//这里有问题 为什么? 可以穿变量//delay_2us(1) while(--1);
[解决办法]
单片机小程序,
还是直接写个延时小函数吧

热点排行