*pSpiTxBuf++ = CC2520_INS_SFLUSHRX; // get rid of this packet
*pSpiTxBuf-- = CC2520_INS_SFLUSHRX; // double flush [CC2520 Bug#1]
任何人都可以向我解釋上述兩條線是試圖做什麼? pSpiTxBuf
是uint8_t *
這是什麼增量和減量任務試圖做?
*pSpiTxBuf++ = CC2520_INS_SFLUSHRX; // get rid of this packet
*pSpiTxBuf-- = CC2520_INS_SFLUSHRX; // double flush [CC2520 Bug#1]
任何人都可以向我解釋上述兩條線是試圖做什麼? pSpiTxBuf
是uint8_t *
這是什麼增量和減量任務試圖做?
這相當於:
pSpiTxBuf[0] = CC2520_INS_SFLUSHRX; // get rid of this packet
pSpiTxBuf[1] = CC2520_INS_SFLUSHRX; // double flush [CC2520 Bug#1]
(這可能早就寫在首位的代碼更明確的方式)。
即它只是將兩個相鄰的寄存器值設置爲CC2520_INS_SFLUSHRX。
增量和減量運算符在取消引用之前更改指針中的地址。 因此你在緩衝區中前進,並且改變新指向的單元格中的值。
把一些括號中可以很清楚的:
*(pSpiTxBuf++) = CC2520_INS_SFLUSHRX;
忽略++
,這是一個標準的指針尊重和形式*p = q
的分配。但p
恰好有一個後增加的運算符,這意味着,使用這個值是正常的,但是在你使用它之後,增加它。
第一個是所述值分配到CC2520_INS_SFLUSHRX
*pSpiTxBuf
,即,指向由pSpiTxBuf
的位置。然後它增加pSpiTxBuf
,以便它現在指向下一個位置。
第二個是類似的,但後來減少指針,所以它現在指向前一個位置。