csliu911 发表于 2013-9-30 12:20:57

带参数的宏定义这样声明编译报错,怎么回事啊

keil c51中我定义了一个带参数的宏如下:
#define ON   1
#define OFF0

#define BUZZER(a) if(a)P2^0 = 1;\
                  else   P2^0 = 0
编译后提示我
key.c(62): error C141: syntax error near '='
key.c(62): error C141: syntax error near 'else'
key.c(62): error C141: syntax error near '='

请问这是怎么一回事啊,我这个定义在PICC中没有问题啊

cxning 发表于 2013-9-30 15:36:50

没用过这么复杂的.

f1yh1347 发表于 2013-9-30 15:40:02

P2^0 = 0
忘了分号了。

yangsen 发表于 2013-9-30 15:41:14

用sbit先声明一下变量,比如sbit LED=P2^0,然后在用宏

lusson 发表于 2013-9-30 16:00:17

yangsen 发表于 2013-9-30 15:41 static/image/common/back.gif
用sbit先声明一下变量,比如sbit LED=P2^0,然后在用宏

正解。
51中不能直接这样访问 :P2^0

另外你这个宏最好大括号加上,要是你的宏是这样的形式就惨了:

csliu911 发表于 2013-9-30 17:35:35

lusson 发表于 2013-9-30 16:00 static/image/common/back.gif
正解。
51中不能直接这样访问 :P2^0



太感谢了!
页: [1]
查看完整版本: 带参数的宏定义这样声明编译报错,怎么回事啊