感謝回復,我的解決辦法就是這樣:
#define EHeat_off {P7OUT |= BIT0; EHisON=0;} //電加熱off
#define EHeat_on {P7OUT &=~ BIT0; EHisON=1;} //電加熱on
用do while應該有它的好處,大佬畢竟是大佬。
基于現(xiàn)在屏幕大部分時候是橫向的,特別是對于我用筆記本來說。更喜歡把一件事寫在一行,好象看著更簡潔,好比:
unsigned char aa,bb,cc;
至于"定義多條語句宏的時候,至少需要用{}把語句框起來",這有點絕對了。
實際上:
#define EHeat_off P7OUT |= BIT0 ,EHisON=0 //電加熱off
#define EHeat_on P7OUT &=~ BIT0, EHisON=1 //電加熱on
上邊語句完全可以實現(xiàn)功能,且最后是沒有分號的,以方便按習慣在調(diào)用時后邊再加分號,如:
if(...) EHeat_off;
上邊實際上是“,”的用法,好比在寫if時為節(jié)約行數(shù),if后同時要做的事一并寫了,不用{}。
如:if(a>b) c=a,a=b,b=c; //交換順序
畢竟是業(yè)余玩,不是按代碼行數(shù)拿薪水,我個人更喜歡上邊這種寫法,當然,壞處是出現(xiàn)了我本主題的毛病,另外也不排除在上邊if中隨手把“,”寫成分號導致隱藏的錯誤。 |