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