一、問題
使用Keil C51編譯,總是提示編譯錯誤
CUST_TASKS.C: 'irDataPsn': undefined identifier
代碼如下,irDataPsn明明定義了,還提示沒定義,編譯不過。
void vCUST_PSN_IrTask(IR_DATA_TYPE irData, IR_DATA_TYPE irData1) { UINT8 ret; IR_DATA_TYPE irDataPsn; LogSD("vCUST_PSN_IrTask ", _MGetIrType()); if(_MGetIrType()!=IRRX_PSN_TYPE) { LogD(irData); return; } IR_DATA_TYPE irDataPsn; irDataPsn = irData >> 24 + irData1 & 0x0000FFFF << 8;
二、解決
void vCUST_PSN_IrTask(IR_DATA_TYPE irData, IR_DATA_TYPE irData1) { UINT8 ret; IR_DATA_TYPE irDataPsn; LogSD("vCUST_PSN_IrTask ", _MGetIrType()); if(_MGetIrType()!=IRRX_PSN_TYPE) { LogD(irData); return; } // IR_DATA_TYPE irDataPsn; irDataPsn = irData >> 24 + irData1 & 0x0000FFFF << 8;
如上,要把定義寫在最上面,編譯通過。應該是C51編譯器沒那么強大,所以限制多。