打印

C语言,帮忙看下。

[复制链接]
1391|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
不光写程序|  楼主 | 2011-6-14 15:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
放下C一段时间了,书也没带。请帮忙看看这个宏定义怎么解决。

#define dispose_key(key) kay_mark=0;key=1; if(key==0) {delay(10); while(key==0) ; delay(10);key_mark=1;}

这个带参数的宏定义是错误的,要想达到这个效果应该怎么写呢?

相关帖子

沙发
不光写程序|  楼主 | 2011-6-14 15:08 | 只看该作者
这个是按键延时消抖代码。

使用特权

评论回复
板凳
原野之狼| | 2011-6-14 15:11 | 只看该作者
#define  xxx(arg)    do{ \
...  \
}while(0)

使用特权

评论回复
地板
johnwjl| | 2011-6-14 16:52 | 只看该作者
#define dispose_key(key) kay_mark=0;key=1; if(key==0) {delay(10); while(key==0) ; delay(10);key_mark=1;}
LZ这样写,虽然风格不好,但哪里错了?

使用特权

评论回复
5
yjsstk| | 2011-6-14 17:27 | 只看该作者
不知道他怎么调用。如果这样调用dispose_key(3); 那么就错在key=1;

使用特权

评论回复
6
不光写程序|  楼主 | 2011-6-15 09:25 | 只看该作者
真奇怪,今天把原代码复制过去又编译成功了,不知道怎么回事。环境是keil_3

使用特权

评论回复
7
johnwjl| | 2011-6-15 09:49 | 只看该作者
建议LZ把“不光写程序”改成“光写程序”,那你写程序水平会有质的飞跃。

使用特权

评论回复
8
gaoyiyiyi| | 2011-6-15 10:06 | 只看该作者
建议LZ把“不光写程序”改成“光写程序”,那你写程序水平会有质的飞跃。
johnwjl 发表于 2011-6-15 09:49

这个要看情况的,一般来说,在大城市,要光写程序,在小城市,还是不光写程序为妙。

使用特权

评论回复
9
hgjinwei| | 2011-6-15 12:27 | 只看该作者
#define dispose_key(key) kay_mark=0;key=1; if(key==0) {delay(10); while(key==0) ; delay(10);key_mark=1;}

这样写不就清楚了嘛:

#define key  P1^0    // 随便啦,总之这肯定是一个IO口,不然无法理解
char chckKey(void)
{
       key=1;
       if(key==0) {
             delay(10);
             while(key==0) ;
             delay(10);
             return(1);
       }
        
        return(0);
}

不过这样实现的话,我按着按键不放,你系统就丫的死了。

使用特权

评论回复
10
不光写程序|  楼主 | 2011-6-15 22:18 | 只看该作者
9# hgjinwei

就是像P1口这样的特殊寄存器不能用指针在函数中传递我才考虑用宏定义的,目的是写个通用的按键检测程序。

使用特权

评论回复
11
不光写程序|  楼主 | 2011-6-15 22:19 | 只看该作者
建议LZ把“不光写程序”改成“光写程序”,那你写程序水平会有质的飞跃。
johnwjl 发表于 2011-6-15 09:49

不想当纯程序员,所以才叫这名的!

使用特权

评论回复
12
johnwjl| | 2011-6-16 09:31 | 只看该作者
鉴于以上,我在这里强烈建议“程序匠人”改名为“不光程序匠人”

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

950

帖子

2

粉丝