linyongzhan 发表于 2009-10-26 14:49:41

请教傻孩子:一个关于宏定义的问题

在你的《深入浅出AVR》书中的宏定义是这样的
# define INSERT_INT1_ISR_CODE   \
                        {\
                            (PIN_PD3 == PIN_PD2) ? g_dNowMotorPosition++ : g_dNowMotorPosition--;\
                            if ((MCUCR & 0x0C) == 0x0C)\
                            {\
                              SET_INT1_FALLING_EDGE\
                            }\
                            else\
                            {\
                              SET_INT1_RAISING_EDGE\
                            }\
                        }      
能解释一下这个宏定义吗,以及反斜杠代表什么意思,能帮忙解释一下吗?先谢了

aozima 发表于 2009-10-26 14:58:24

# define不能跨行,但这个又太长,一行写不下,只好用"续行"

目地是想
把下面的长代码用INSERT_INT1_ISR_CODE来代替
{
    (PIN_PD3 == PIN_PD2) ? g_dNowMotorPosition++ : g_dNowMotorPosition--;
    if ((MCUCR & 0x0C) == 0x0C)
    {
      SET_INT1_FALLING_EDGE
    }
    else
    {
      SET_INT1_RAISING_EDGE
    }
}

宏定义固然强大,但滥用除了增加阅读难度没别的好处.

snail0204 发表于 2009-10-26 14:58:41

一行太长了分开来写,看得清楚点
页: [1]
查看完整版本: 请教傻孩子:一个关于宏定义的问题