void Translate(void)
公司主營業務:網站建設、成都網站制作、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。成都創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創新互聯公司推出德陽免費做網站回饋大家。
{
unsigned char data; //聲明data為無符號字符型變量
while((Fifo_Get(data))==0)//while循環,滿足Fifo_Get(data)為真時進入循環(為取址符,傳輸data變量的存放地址給函數)
{
switch(stateRX) //多項選擇,
{
case RCV_FE: //當stateRX的值等于RCV_FE時執行以下語句。(case的格式:case 常量 :。RCV_應該是通過在程序開頭#define RCV_FE ??得到的,??表示任何符號 )
if( data == 0xfe) //若data為0xfe(0x??表示十六進制數)時
stateRX++; //stateRX自增(相當于stateRX=stateRX+1;但執行速度更快)
else //若前面的data == 0xfe條件不成立,則執行以下語句
stateRX = RCV_FE; //賦值語句
break; //跳出switch,(若沒有這步,若case RCV_FE:成立將會一直執行下去,忽略下面的case)
case RCV_EF: //同理
if( data == 0xef) //同理
else //同理
stateRX = RCV_FE; //同理
break; //同理
case RCV_ID: //同理
LRC = 0Xff; //同理
id = data; //同理
LRC ^= data; //。。。。。這句就。。。LRC和data的各相應位進行異或再賦值給LRC(異或:位運算,法則是必須不同,否則沒有,例子:1^1=0,1^0=1,0^0=0)
stateRX++; //同理
break; //同理
case RCV_LEN: //同理
len = data; //同理
LRC ^= data; //同理
stateRX++; //同理
break;//同理
case RCV_INSTRUCT://同理
cmd = data;//同理
LRC ^= data;//同理
paraindex = 0;//同理
if(len-2=0)//len-2=0的意思是先len-2再判斷len-2是否小于等于零
stateRX=RCV_CHKSUM;//同理
else//同理
stateRX++; //同理
break; //同理
case RCV_PARA://同理
paratmp[paraindex++] = data;//將data賦值給paratmp[paraindex],然后paraindex自增;
LRC ^= data;//同理
if( paraindex = len-2)//同理
stateRX++; //同理
break;//同理
case RCV_CHKSUM://同理
if(LRC == data)//同理
Dispatch(); //函數Dispatch()
stateRX = RCV_FE; //同理
break; //同理
default://switch的末句,若以上case都不等于stateRX的值,則執行default后面的語句,這里default后面是brake;,這兩句不要也可
break;
}
}
}不能說完,但希望能拿到這兩百塊
第一個正如你所說。
第二個的話是個函數的定義,這種返回函數指針的類型沒法直接寫在函數名的前面,所以
void (*GetOperateState(void))(U8)這一行是標明了返回值是個函數指針,返回的函數指針的結構跟第一個里的一樣,實際上也就是把第一個聲明的函數指針給返回了。
第三個跟第一個差不多,但是0不是指入口地址為0的函數,0代表NULL,是無的意思,這個是不能被調用的。
brake是一個自定義的標識符嗎?
C語言中用break來跳出循環或switch的當前執行序列。
應該是break吧,主要用處是退出當前循環,和switch結構搭配是最經典的,有的時候在多層嵌套的for循環內也會用到