我发现csl_mcasphal.h里面有这样一个现象,: #define MCASP_RGETH(h,REG) MCASP_RGETA(MCASP_ADDRH(h,##REG),##REG) #define MCASP_RGETA(addr,REG) _PER_RGET(addr,MCASP,##REG) #define _PER_RGET(addr,PER,REG) (*(volatile Uint32*)(addr)) 请问: 1。为什么要把A定义成B又把B定义成C,直接定义成C不得了,要不然编译的时候直接替换掉以后中间那个岂不是没有意义吗? 2.在 #define _PER_RGET(addr,PER,REG) (*(volatile Uint32*)(addr))里面,前者是三个参数,后者是变成取地址了,一个参数,那PER和REG岂不是没有任何作用? 好像是C语言的基本问题,有人能帮我解释一下吗?不胜感激! |